Java知识点:琐碎知识点(1)
Java基本介绍
SUN:Stanford University Network
Java之父:James Gosling
Java的跨平台性因为有Java虚拟机,运行class文件。
Java吉祥物:Duke
JDK是用来开发的(编译Java程序),而如果只运行Java程序,则只需要JRE即可。
而JDK也是用Java写的,因此如果要编译Java程序,也要JRE,因此在JDK目录中也会有一个JRE目录。
第三方的JAR包(dom4j.jar)都是由class文件组成的,Eclipse的“add to build path”就是将jar包加入环境变量classpath中。
标识符命名规范
关键字必须是小写
- 不能用Java的关键字作为标识符名称。
- 以“字母、$、下划线”作为开始。
- 允许“字母、$、下划线、数字”。
花括号的对齐方式
void fun() //建议使用 void fun(){ //不建议使用
{} }
类、接口、方法、变量命名规范
- 类: 名词,比如 Apple
- 接口:形容词,比如Serializable(可序列化)
- 方法:动词+名词,比如 doCalculation()
- 变量:名词
JavaBeans 命名规范
- JavaBeans是一个带有属性的Java类。
- 如果属性是Boolean类型,则getter方法可以是isXxx()或getXxx(); 如果属性是非Boolean类型,则getter方法可以是getXxx()。
- setter方法的命名是:setXxx()。
- 对于监听器方法,命名规范为:addXxxListener() 和 removeXxxListener()。
Strictfp
- strictfp: strict floating-point calculation(严格浮点运算)
- 介绍:strictfp 是 Java 的关键字(keyword),自从 Java 1.2 以来被引入,使得浮点运算遵循 IEEE 754 标准。
- 目的:portable(可移植性)。
- 需求:在每个平台(机器)上(32位、64位)的浮点运算精度相同,比如,使用 strictfp 规定浮点运算的精度是32位,而在64位的机器上浮点运算可以精确到64位,但是使用strictfp后,就算在64位的机器上运行程序,浮点运算精度仍为32位。
public class Strictfp
{
public static void main(String args[])
{
A a = new A();
System.out.println(a.subtract1(2.00,1.10));
System.out.println(a.subtract2(2.00,1.10));
}
} class A
{
public double subtract1(double left,double right)
{
return left - right;
}
public strictfp double subtract2(double left,double right)
{
return left - right;
}
}
局部变量
- 声明局部变量时建议要初始化,虽然不初始化本身不会编译错误,但是你使用了未初始化的变量时会Compile Error。
int a;
System.out.println(a); //Compile Error:"可能尚未初始化变量 a"
a+=b 与 a=a+b的区别
(假设a的类型是A,b的类型是B)
- a+=b 等价于 a=(A)(a+b)
异常分类
- RuntimeException:不用捕获或声明抛出的异常,如NullPointerException。
- 检验异常:需要捕获或声明抛出的异常。
- Error:机器内部错误。
进制转换
public class Wrapper01
{
public static void main(String[] args) {
System.out.println(Integer.parseInt("111100",2)); //二进制 -> 十进制
System.out.println(Integer.toHexString(Integer.parseInt("111100",2))); //二进制 -> 十六进制
System.out.println(Integer.toOctalString(Integer.parseInt("111100",2))); //二进制 -> 八进制 System.out.println(Integer.parseInt("74",8)); //八进制 -> 十进制
System.out.println(Integer.toBinaryString(Integer.parseInt("74",8))); //八进制 -> 二进制
System.out.println(Integer.toHexString(Integer.parseInt("74",8))); //八进制 -> 十六进制 System.out.println(Integer.toHexString(60)); //十进制 -> 十六进制
System.out.println(Integer.toOctalString(60)); //十进制 -> 八进制
System.out.println(Integer.toBinaryString(60)); //十进制 -> 二进制 System.out.println(Integer.toBinaryString(Integer.parseInt("3C",16))); //十六进制 -> 二进制
System.out.println(Integer.toBinaryString(Integer.parseInt("3C",16))); //十六进制 -> 二进制
System.out.println(Integer.parseInt("3C",16)); //十六进制 -> 十进制
}
}
不用第三方变量交换整数
a = a ^ b;
b = a ^ b; //(a^b)^b=a ,现在b=a
a = a ^ b; //(a^b)^a = b,现在a=b
临时环境变量设置
- set PATH //显示PATH
- set PATH=XXXXX //设置PATH
方法重写
假设原方法为A,重写的方法为B
- 方法B的返回类型可以是方法A的返回类型的子类型。
- 方法B不能抛出比方法A更多的异常。
- 方法B的访问控制不能比方法A的更限制。
重写与重载的区别
重载 | 重写 | |
参数 | 必须改变 | 一定不能改变 |
返回类型 | 可以改变 | 一般不改变 |
异常 | 可以改变 | 只能抛更小的异常 |
访问级别 | 可以改变 | 一定更广 |
调用 | 编译时决定调用哪个重载版本 | 运行时决定调用哪个重写方法 |
public class Polymorphism02
{
public static void fun(Student student)
{
System.out.println("调用了以Student为参数的函数");
student.print();
}
public static void fun(Person person)
{
System.out.println("调用了以Person为参数的函数");
person.print();
}
public static void main(String[] args) {
Person person = new Student();
fun(person); //调用了fun(Person person),但是因为多态性,所以函数中的person.print()调用了Student的print方法
}
} class Person
{
public void print()
{
System.out.println("Person");
}
}
class Student extends Person
{
public void print()
{
System.out.println("Student");
}
}
初始化块
- 静态代码块:加载类时被执行,即使创建了多个类对象,但是只在第一次创建前执行静态代码块。
- 一般初始块:调用构造函数的super语句(第一句)后执行。
public class InitializationBlock01
{
public static void main(String[] args) {
//output: a b z c d e f c d e f
System.out.println("z");
B b = new B();
B c = new B();
}
}
class A
{
{
System.out.print("c ");
}
public A()
{
System.out.print("d ");
}
}
class B extends A
{
static
{
System.out.print("a ");
}
public B()
{
System.out.print("f ");
}
{
System.out.print("e ");
}
static
{
System.out.print("b ");
}
}
位运算
- a >> b :a是int,则有32位,这个运算是将a有符号右移(b%32)位;a是long,则有64位,这个运算是将a有符号右移(b%64)位.
- a >>> b: a是int,则有32位,这个运算是将a无符号右移(b%32)位;a是long,则有64位,这个运算是将a无符号右移(b%64)位.
- a << b : a是int,则有32位,这个运算是将a左移(b%32)位;a是long,则有64位,这个运算是将a左移(b%64)位.
Java知识点:琐碎知识点(1)的更多相关文章
- Java入门学习知识点汇总
Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- Java研发工程师知识点总结
Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 ...
- 牛客网Java刷题知识点之为什么HashMap和HashSet区别
不多说,直接上干货! HashMap 和 HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...
- 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类
不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...
- 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
随机推荐
- 2064: 分裂 - BZOJ
Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中 ...
- 管道Pipe
管道Pipe java.nio.channels包中含有一个名为Pipe(管道)的类.广义上讲,管道就是一个用来在两个实体之间单向传输数据的导管.管道的概念对于Unix(和类Unix)操作系统的用户来 ...
- BZOJ 1051: [HAOI2006]受欢迎的牛 强连通缩点
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1051 题解: 强连通缩点得到DAG图,将图转置一下,对入度为零的点跑dfs看看能不能访问 ...
- myeclipse/eclipse添加Spket插件实现ExtJs4.2/ExtJs3智能提示
前言 感谢luotao,本博客是copy这篇博客的:http://www.cnblogs.com/luotaoyeah/p/3803926.html ,因为太重要了,所以笔者再写一次. 重要说明:ec ...
- execvp使用实例
问题描述: 本程序实现模拟shell功能,用户输入命令,返回相应的结果 问题解决: 注: 以上指出了execvp函数的使用,使用时第一个参数是文件名,第二个参数是一个 ...
- 【tarjan】BZOJ 1051:受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3134 Solved: 1642[Submit][Sta ...
- PHP之session相关实例教程与经典代码
·php 中cookie和session的用法比较 ·phpmyadmin报错:Cannot start session without errors问题 ·php中cookie与session应用学 ...
- uva 11627
二分 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #inc ...
- poj 3083 Children of the Candy Corn (广搜,模拟,简单)
题目 靠墙走用 模拟,我写的是靠左走,因为靠右走相当于 靠左走从终点走到起点. 最短路径 用bfs. #define _CRT_SECURE_NO_WARNINGS #include<stdio ...
- POJ 3258
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5961 Accepted: 2579 D ...