1.
在java中char 是两个字节,可以存放一个字。。。
char a = '赵';
采用unicode编码。。。
在java中对char进行运算时,直接当做ascii码对应的整数对待。。。
2.
java中精度很蛋疼
精度由高到低依次为
byte < short <int < long < float < double
只能有低精度向高精度转
而且在java中一个小数比如1.1,它会默认为double
例如:
int a = 1.2; //是错误的,double不能转化为int 因为double的精度比int高
double a = 1; //正确
float a = 1.2; //错误。。。
float a = 1.2f; //用f表示是一个float类型
再比如:
int a =1;
int b = a + 2.3; //错误啊啊啊啊,因为a+2.3结果为double,double不能转为int
3.Java中的静态块
class Parent {
static String name = "hello";
{
System.out.println("parent block");
}
static {
System.out.println("parent static block");
}
public Parent() {
System.out.println("parent constructor");
}
}
class Child extends Parent {
static String childName = "hello";
{
System.out.println("child block");
}
static {
System.out.println("child static block");
}
public Child() {
System.out.println("child constructor");
}
}
public class Monster {
static
{
System.out.println("aaaaaaaaaaaaaaaaaaa");
}
public static void main(String[] args) {
new Child();
}
}
输出:
aaaaaaaaaaaaaaaaaaa
parent static block
child static block
parent block
parent constructor
child block
child constructor
最最最最最最最最最最最最最最最最最最最最最最最最好奇的是。。。。
如果注视掉//new Child();
那么将只输出:
aaaaaaaaaaaaaaaaaaa
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
强烈参考:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html
4.
包的作用
1.区分相同名字的类
2.当类很多时,方便管理
3.控制访问范围
5.java规范
Java标识符的命名规则:
1) 标识符由字母、数字、下划线“_”、美元符号“$”或者人民币符号“¥”组成,并且首字母不能是数字。
2) 不能把关键字和保留字作为标识符。
3) 标识符没有长度限制。
4) 标识符对大小写敏感。
Java编程规范:
1)类名和接口名:首字母大写,其余字母小写。如SamDoc
2)方法名和变量名:首字母小写,其余的字母大写。
如bothEyesOfDoll。
3)包名:字母全部小写。如,com.abc.dollapp。
4)常量名:采用大写形式,单词之间以下划线“_”隔开。
如DEFAULT_COLOR_DOL。