Java基础知识补充(一)
环境变量配置
jdk与jre区别:
jdk:开发工具包(jre+开发工具包)
jre:Java运行环境(jvm+核心类库)
path与classpath的区别:
path环境变量里面记录的是可执行文件,如.exe文件,对可执行文件先在当前路径去找,如果没有找到就去path环境变量中配置的路径去找
classpath环境变量里记录的是Java类的运行文件所在的目录
数据类型
基本数据类型:
类型 | 所占字节 | 取值范围 |
---|---|---|
byte | 1 | -128~127 |
short | 2 | -215~215-1 |
int | 4 | -231~231-1 |
long | 8 | -263~263-1 |
float | 4 | |
double | 8 | |
char | 2 | 0~65535 |
boolean | 未规定 |
’'中必须放的是单个字符,10代表的是1字符和0字符
''中什么也不放也不可以,因为什么都代表不了
用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
float的取值范围大于long
标识符命名:
- 可以包含数字,字母,下划线(_),美元符号($),但不能以数字开头
- 严格区分大小写
- 不能包含Java关键字和保留字
- 最好能做到见名知意
方法和变量名的命名规则:
- 满足标识符命名规则
- 符合驼峰法命名规范(如果是一个单词,每个字母都小写,如果是多个单词,从第二个单词开始首字母大写)
尽量简单,做到见名知意 - 变量名的长度没有限制
类或接口的命名规则:
满足Pascal命名法规范(一个单词首字母大写,多个单词,每个单词的首字母大)
包:
包名要求全部小写,一般是公司的域名倒着写
常量:
如果是一个单词,所有字母大写,如果是多个单词也是所有字母大写,但是用_分开
类型转换
二进制:以0b开头
八进制:以0开头,包括0-7的数字
十六进制:以0x或0X开头,包括0-9的数字,及字母a-f或A-F
例:
byte b1=3;
byte b2=4;
byte b3=b1+b2; (编译错误)
byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型
b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
byte b4=4+3; (编译正常)
java编译器有常量优化机制
进行混合运算的时候,byte,short,char不会相互转换,都会自动将类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char—int—long—float—double
int x=4;
int y=(x++)+(++x)+(x*10); //x=6;y=70;
byte b=10;
b++; //b++等价于b=(byte)(b+1); 正确
b=b+1; //错误
short s=1;
s=s+1; //报错,不兼容的类型: 从int转换到short可能会有损失
s+=1; //正确,等价于s=(short)(s+1);
运算符
^逻辑异或:相同为false,不同为true。
位运算符
- &:有0则0
- |:有1则1
- ^:相同则0,不同则1
- ~:按位取反
位异或运算符的特点:
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
System.out.println(5^10^10); //5
System.out.println(5^10^5); //10
实现两个整数变量的交换:
1.定义一个第三方变量 (开发推荐)
2. int x=10; (但是有弊端,两数相加可能会)
int y=5;
x=x+y;
y=x-y;
x=x-y;
3.不需要第三方变量,通过^来做 (面试推荐)
x=x^y; //10^5
y=x^y; //10^5^5 y=10
x=x^y; //10^5^10 x=5
<<:
左移,左边最高位丢弃,右边补齐0
左移,向左移动几位就是乘以2的几次幂
>>:
右移,最高位是0,左边补齐0;最高位是1,左边补齐1
右移,向右移动几位就是除以2的几次幂
>>>:
无符号右移,无论最高位是0还是1,左边补齐0