Java的好处
1.跨平台性(依赖于java virtual machine(JVM))
2.自动内存管理:仍然会有内存溢出,内存泄漏(未处理垃圾)情况出现
3.社区繁荣
Java半编译半解释性:在将程序转化为字节码文件后,在JVM中有两种执行形式,一种是编译形,一种是解释形所以称为半编译半解释性
语法:
\t 制表符 就是好多个空格
\n 换行符
命名规则:
包名:全小写
类名,接口名:单词首字母大写 e.g.:HelloWorld
变量名:第一个单词的首字母小写后面单词首字母大写 e.g.:bookName
常量名:所有字母都大写,多单词时用_连接 e.g.:MAX_VALUE
java中的数据类型:
基本数据类型:
整型:byte (1字节8bits -128--127)/ short(2字节) / int(4字节) / long(8字节)需要提供后缀'l' 或 'L'
long l = 299l
浮点型: float 需要提供后缀 'f'或'F' / double
布尔型:boolean
字符型:char
引用数据类型:
类(class),数组(array),接口(interface),枚举(enum),注解(annotation),记录(record),字符串(string)
***默认值都为null
基本数据类型变量之间的运算规则:
从左往右
1.自动类型提升(小变大)
规则:容量小的类型与容量大的类型做运算时会自动转换为容量大的 容量指的是表示范围 float>long 特殊情况:byte ,short,char 类型之间做运算结果为int
2.强制类型转换(大变小)
long l1= 123
int l2 =(int)l1 //在需要转换的变量前写个小括号其中填写想要转换的类型
String 与 基本数据连接: 使用 + 号
若String中为数字则使用Integer.parseInt()转换
int a = 10
String b = a + ""
int c = Integer.parseInt(b)
进制表示:
二进制 0b开头
八进制 0开头
十六进制 0x开头
运算符
算数运算符:+,-,*,/,%(取余操作,正负与被取余数符号相同),++,--
int a = 3 ;
int b =++a; //先自加后赋值
int c =a++; //先赋值后自加
赋值运算符: =,+=,-=,*=,%= 这种操作不会改变原变量类型
比较运算符:==,!=,>=,<=,>,< 带不等号的只适用于除boolean 外的基本数据类型
逻辑运算符:&,&& ( “与”);|,||(“或”);!(取反);a^b(“异或”) 针对于boolean类型
// &&,||会短路
boolean b = false
int a = 10
if (b && (a++ > 10)){
System.out.println("1,a="+a);
}else{
System.out.println("2 ,a="+a); //输出为2 ,a=10
}
//这是因为当判断到b为false时就停止了a++就没有执行,这种操作就叫做短路
条件运算符:(条件表达式)?表达式1:表达式2 判断条件表达式如果为true执行表达式1否则执行表达式2
在任何情况下都能用if else代替条件运算符但是条件运算符不一定能代替if else。
条件运算符效率要高于if else
企业真题
1.高效的方式计算2*8的值
8<<1
2.为什么JAVA中0.1+0.2 结果不是0.3?
所有编程语言都有这样的问题,因为二进制中小数与十进制中的数不能够一一对应
0b0.0001=0.0625 0b0.0010=0.125 0b0.0011=0.1875
小数部分将其乘2然后取整数部分作为二进制位,余数作为下次迭代的小数,这个过程一直重复直到小数部分变为0.
流程控制
分支结构:
if-else,
switch() case 指定的数据类型:byte/short/char/int;枚举类/string。case穿透
循环:
for,while,do-while
break跳出当前循环结构
continue跳出档次循环