总结001&面试
第一章Java基础
1.1 Java的核心? 跨平台没有之一
1.2 Jdk、Jre、Jvm 三者的关系?Jdk包括jre,jre包括jvm
1.3 多行注释不能嵌套,多行注释可注释某行中某些单词 /*allen*/args
1.4 标识符规则?标识符是否支持中文?以及其作用?
- 由字母、下划线、美元符号($)、数字组成,但不能以数字开发。
- 特别注意此处的字母说的是unicode字符集,所以标识符支持中文哦?
- 其作用就是给变量、方法、类、接口、枚举、注解类命名
1.5 数字注意点
- 整型数字默认是int,浮点型默认是double,注意计算表达式中类型自动提升
- 整型想用long,用L或l结尾。浮点型想用float用F/f结尾。
1.6 单引号、双引号、\在java的世界里都有特殊意义,分别表示字符、字符串、转义
- char c=’\’’;才表示单引号
- String s = “\””;才表示双引号
1.7 基本类型注意点
- Byte、short、char自动提升到int并且可以把整数直接赋值给他们,别超过其范围,否则会报错。byte是-127至128,char是0至65535
char c = 'c' +1;
System.out.println(c); //d
char d = 100; //直接把整数赋值给char变量
System.out.println(d);//d
- 整型默认是int,要表示long,需整型后面加L或l,浮点数默认是double,要表示float,得在浮点数后面加F/f
long ds = 70L * 60 *24 * 365 * 24;涉及类型提升一定要先提升(70L),否则可能报溢出错。long total = (long)money * years;而不是long total = (long)(money * years);
- 浮点数存在舍入,最好不要进行数值比较(尤其是等号)。
要精准浮点数用BigDecial。要比long大整数用BigInteger
- char的范围0-65535,数值运算时直接当作整数运算,可把0-65535范围的数直接赋值给char变量。
- 强转可能超出其范围,超出就存在截取。
- 负数的二进制转十进制,符号不变,按位取反 + 1
- boolean类型只有1个位,2个值为true或false,而不是1个字节
1.8 局部变量与全局变量的区别?
从5点讲述
- 范围不同即作用域不同
- 有没有默认值,全局有,局部无
- 加final关键字后的差异,全局必须在声明处赋值;局部在使用时必须赋值
- 实参(掉用函数时参入的参数)、形参(定义函数时声明的参数);java只有值传递,基本类型、String等不可变类,不会改变原值;其他引用变量会改变对象的值(因为传递的值不变,是指引用的值即对象的地址不变,但会导致对象的内容/值发生改变。
- 局部变量不能使用static修饰,而且静态方法或静态块中不能出现static关键字即不能在静态方法或静态块中声明静态变量,因为java自动隐式添加static
Integer、String都是不可变类哦
1.9 运算符分类及优先顺序
1.9.1> 1. 括号() 2、正负号+、- 3、一元运算符:++、--、!即自增、自减、取反
1.9.2> 算术运算符:4、乘除求余:*、/、% 5、加减:+、- 6、移位运算符:>>、>>>、<<右移、无符号右移,左移(没有无符号左移哦)
1.9.3> 比较运算符:7、比较大小:<、>、>=、<= 8、比较相等:== 、!=
1.9.4> 位与、异或、或:9、& 10、^ 11、|
1.9.5> 逻辑与或:12、逻辑与:&& 13、逻辑或:||
逻辑运算符有短路功能,操作的数据都是boolean值或布尔表达式
1.9.6> 14、三元运算符: ? :
1.9.7> 15、赋值运算符: =、+=、-=
- 左移1位相当于乘以2,右移1位相当于除以2
- 面试题:3乘以2,怎么算最快? 3 << 1 即3左移1位
- + 号和字符串在一起,就没有运算作用,变成了字符串连接syso(4+”5”)—>45
1.10 if小技巧
- If(表达式中的变量的范围越来越大即先i>5;接着i>3;然后i>1)
If(i > 5){
}else if(i >3){
}else if(i >1){
}else{
}
- 一般不用这样写if(c==3),而是这样写if(3==c)即把确定值的放前面