Java SE 基础语法
访问修饰符
关键字
- 定义:被 Java 语言赋予特殊含义,用做专门用途的字符串(单词)
- 特点:所有字母都是小写
- 全部关键字:网上搜
保留字
- 现Java 版本尚未使用,但后面的版本可能会作为关键字用。
- 具体那些保留字:goto 、const
- 注意:自己命名标识符时要避免使用。
标识符的使用
- 由26个英文字母大小写,0-9,_ 或 $ 组成。
- 数字不可以开头。
- 不能使用关键字和保留字,但是可以包含。
- Java 严格区分大小写,长度无限制,不能有空格。
数据类型
- 定义:Java 是强类型语言,对于每一种数据都定义了具体的数据类型,在内存分配了不同大小的内存空间。
- 分类:按数据类型分类
- 取值范围计算:2^(多少byte*8bit - 1) - 1 === 2^(多少位-1)- 1
- 基本数据类型图:long 、 float 和 double 必须要有后缀
基本数据类型间的运算规则(除了 Boolean 之外的七种)
- 自动转换类型:当容量小的数据类型转换为容量打的数据类型做运算时,结果自动提升为容量大的数据类型。
- 自动转换方式:byte、char、short - - > int - - > long - - > float - - > double。此时的容量大小是指表示数的范围的大和小。
- 强制转换:自动类型提升运算的逆运算。需要使用强转符:();注意:可能导致精度损失。
- 特别的 String:String 和 其他 八 种(包括 boolean)数据类型变量做运算,结果都是 String 类型,且只能用 ‘+’ 运算。
- 关于变量赋值:
① 如果变量是基本数据类型,此时赋值的是变量保存的数据值。
② 如果变量是引用数据类型,此时赋值的是变量保存的地址值。
大数值
如果基本的整型和浮点型精度不能满足要求,则可以使用 java.math 中的 BigInteger 和 BigDecimal;
BigInteger 实现了任意精度的整数运算。
BigDecimal 实现了任意精度的浮点数运算。
可以使用 BigInteger.valueOf 将整数类型转为 BigInteger。
int a = 100;
BigInteger test = BigInteger.valueOf(a);
BigInteger中不能使用+、-、*、/,只能使用add。
包装类的使用
- 引入包装类,为了使基本数据类型的变量具有类的特征。
- 基本数据类型 与 对应的包装类 :
- 需要掌握的类型间的装换:(基本数据类型、String、包装类)
进制
- 二进制:Ob/oB 开头;八进制:以数字 0 开头;十六进制:以Ox/oX 开头。
- 二进制的使用说明:
① 所有数字在计算机底层都以二进制形式存在。所有数值,不管正负,底层都以补码形式存在。
② 原码、反码、补码的说明:
1)整数:三码合一:
2)负数:
原码:直接将一个数转换成二进制数。最高位是符号位。
负数的反码:对原码按位取反,只有最高位(符号位)确定为1。
负数的补码:其反码+1。
3.进制之间的转换:
控制流程语句
- break:跳出总上一层循环,结束当前循环体。
- continue:跳出本次循环,进入下一个循环条件。
- return:程序返回,不再执行下面的代码。
运算符
- 比较运算符:>== 和 != ,不仅可以用于基础数据之间,也可用在引用类型变量之间。还有instanceof,左边是对象,右边是类,对象是类本身或子类创造的对象,则返回 true,否则返回 false。
- 逻辑运算符:& && | ||,前者都要比完,后者不用。
- 位运算:
1)& 按位与,任何二进制位和0进行&运算,结果是0;和1进行&运算结果是原值。
0&0=0; 0&1=0; 1&0=0; 1&1=1
2)| 按位或,参加运算的两个数只要两个数中的一个为1,结果就为1。
3)^ 按位异或,任何相同二进制位进行运算,结果是0;不相同二进制位运算结果是1。
4)~ 取反,对位求反 1变0, 0变1
5)>> 右移,被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,最高位补1。
在一定范围内,每向右移1位,相当于 / 2
6)<< 左移,空位补0,被移除的高位丢弃。在一定范围内,每向左移1位,相当于 * 2
7)>>>,无符号右移
相关面试题:
switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
用最有效率的方法计算 2 乘以 8
2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。
Math.round(11.5) 等于多少?Math.round(-11.5)等于多少
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。
float f=3.4;是否正确
不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 float f =3.4F;。
short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗
对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。
而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。
在 Java 中,如何跳出当前的多重嵌套循环
在循环语句前面定义一个符号,循环里面的 break 符号,即可跳出循环。
public static void main(String[] args) {
ok:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println("i=" + i + ",j=" + j);
if (j == 5) {
break ok;
}
}
}
}
参考:https://thinkwon.blog.csdn.net/article/details/104390612,https://www.bilibili.com/video/BV1Kb411W75N?from=search&seid=12153546638638215026&spm_id_from=333.337.0.0