jdk包含jre,jdk负责把java程序编译成class文件,格式为javac xxx,java;
jre负责读取class文件,,格式为java xxx(不需要带class后缀)
se属于Java的核心语法,属于基础语法规则,ee属于互联网和网站开发,me属于手机端开发
SDK使用别人的代码等,作为代码样例
java基础写法:
public class xxx(和文件名字保持一致){
public static void main(String[] args){
System.out.println("hello world");
}
}
java注意事项:
1,java区分大小写,如变量等
2,命名规范:最好这么写,但不遵循也不会报错
(1)大驼峰:class类名 :AaaaBbbbCccc
(2)小驼峰:变量名,方法名,文件名,文件夹名:aaaBbbbCccc
(3)全部大写:常量名字:AAAABBBCCC
3,java注释:单行注释//内容 多行注释/*内容*/
4,地址越细,空间占用越大,越不划算,为了减少损耗,计算机最基础的单元是1B=8bit
8bit->32bit->缓存行填充性能,减少阻塞,缓存行靠总线(金属导线通电)获得数据;一般期望里面大类型数据更多,小类型数据更少,这样子可以加快运行速度
5,操作系统是由c语言写的,故实际上底层只有6种基础数据类型(即不包含byte和boolean2个类型);所有复杂数据和其他不属于c语言的基础数据类型的高级语言基础数据类型都会拆分成c语言的6种基础数据类型,其中boolean由int类型cos
6不超范围的情况下,int可以用2,8,16进制;超出范围的计算语法没有错误,但是最终结果错误,只保留范围内的数字,大于的部分删除(2进制)程序内数值为补码
java八大基础数据类型:一字节=8bit;基本类型大小固定,只和类型有关
1,byte-8bit;-128-127;
2,short-16bit;byte*256;
3,int-32bit;short*256;int相比float,精度更高;
4,long-64bit;long x =10L;long*256(不加L不会报错但是会约等于int类型);byte,short ,int,long支持向下兼容,即long类型的变量可以接受int类型的变量,且不会丧失阶段
5,float-32bit;x=234.657F ;float 0(符号位)0x8(阶位)0x23(数值位)
总值为:x为阶数(0-255)y为数值(0-2^23 -1 )(2^(x-127))*y[减127是因为127是x的中间数]
6,double-64bit;float 0(符号位)0x11(阶位)0x52(数值位);double可以向下兼容float,同时float和都可以接受long,int,short,byte类型的变量,但是如果int数值过大,float容易丧失精度,long数值过大,float和double都容易丧失精度
总值为:x为阶数(0-2047)y为数值(0-2^52-1 )(2^(x-1023))*y
7,char-8/16/24/32(根据编码的类型决定)bit(c++固定8bir)char x='x';必须是单引号'';字符,符号,几何图形;
8,boolean-32bit(7和8是基础问题,必记得);有且只有false和true2个;32bit主要是使用时要记录地址
编码:
final 修饰的基本类型不可以第二次赋值,修饰的引用类型也不可以改变指向,修饰的类不可以被继承,修饰的方法不可以被重写,所以final防止指令重排序,遏抑流水线性能优化,保障多线程并发场景下的可见性(重点)
类型转换:x=(x的类型)变量y 如 int x=0; long y =1; x=(int) y; 这种办法容易失去一些东西,如浮点数转整数会丢失小数部分等
a++和++a,都表示a=a+1,但是a++是最后结算,++a则是先结算 如int a=10;int b=a++;int c=++a; 则最后a=12;b=10;c=12;
任何变量等于自己++或者--都是无效的,如int a=10;a=a++(a--); a还是10;