不同进制的数据表现:
二进制:由0,1组成。以0b开头。
八进制:由0,1,...7组成。以0开头。
十进制:由0,1,...9组成。默认整数是十进制。
十六进制:由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
数据类型分类:
A:基本数据类型
B:引用数据类型(类,接口,数组)
基本数据类型:4类8种
A:整数 占用字节数
byte 1
short 2
int 4
long 8
B:浮点数
float 4
double 8
C:字符
char 2
D:布尔
boolean 1
注意:
整数默认是int类型
浮点数默认是double类型。
长整型后缀用L或者l标记。建议使用L。
单精度浮点数用F或者f标记。建议使用F。
注意:
boolean类型不能转换为其他的数据类型
默认转换(从小到大的转换)
A:byte,short,char—int—long—float—double
B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
强制转换:
从大的数据类型到小的数据类型。
格式:
目标数据类型 变量 = (目标数据类型) (被转换的数据);
注意:
不要随意的去使用强制转换,因为它隐含了精度损失问题。
面试题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
b = b1 + b2;是有问题的。
因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
面试题:
short s=1;s = s+1;
short s=1;s+=1;
上面两个代码有没有问题,如果有,那里有问题。
为什么第二个木有问题呢?
扩展的赋值运算符其实隐含了一个强制类型转换。
s += 1;
不是等价于 s = s + 1;
而是等价于 s = (s的数据类型)(s + 1);
switch:表示这是switch选择结构
表达式:这个地方的取值是有限定的
byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
面试题:
byte可以作为switch的表达式吗?
long可以作为switch的表达式吗?
String可以作为switch的表达式吗?
控制跳转语句:
break:中断, 跳出单层循环
continue:继续, 跳出一次循环,进入下一次的执行
return:返回, 其实它的作用不是结束循环的,而是结束方法的。
方法重载:
在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
参数列表不同:
A:参数个数不同
B:参数类型不同
Java中的参数传递问题:
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。
代码块:在Java中,使用{}括起来的代码被称为代码块。
根据其位置和声明的不同,可以分为
局部代码块:局部位置,用于限定变量的生命周期。
构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。
作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。
静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。
作用:一般是对类进行初始化。
面试题?
静态代码块,构造代码块,构造方法的执行顺序?
静态代码块 -- 构造代码块 -- 构造方法
静态代码块:只执行一次
构造代码块:每次调用构造方法都执行