JAVA基础语法一
文档注释
/*
*@Description
*@Author
*/
各种奇葩的多行注释图片,百度搜索“有趣的代码注释”,学习的时候尽量给自己找一些乐趣就更开心想学了
关键字
标识符
大写A-Z/小写a-z,$,_开头
标识符大小写敏感的
基本类型
定义long类型在数字后面要加L,否则当做int处理
long num4 = 30L;
定义float类型要在数字后面加个F,否则都是小数IDE默认当作double类型处理
float num = 50.1F;
注意不用可以去记基本数据类型的取值范围,可以看基本类型的对应包装类int->Integer, byte->Byte里面会有最大值最小值定义.
位单位扩展
- 1bit->1位, 1Byte(字节) = 8b,1KB = 1024B...
- 32位电脑和64位电脑区别在于寻址能力
32位寻址空间范围是2的32次方 4GB左右.64位最大寻址空间2的64次方,大约1亿GB,实际中电脑可带128G内存
此外cpu有32位,64位之分。64位可装32位系统也可以装64位系统。运算速度不同,64位cpu可以运行64位数据指令
整数扩展进制
二进制0b前缀开头,
八进制0开头, int i8 = 010;
十六进制0x开头, int i16 = 0x10 (0~9 A~F)
浮点数扩展银行业务怎么表示钱(BigDecimal)
***浮点数是有效离散含有误差的,接近但不等于,最好完全避免使用浮点数进行比较,而是使用类BigDecimal***
```java
//float不精确,例1
float f = 0.1f;
double f = 0.1;
Sysytem.out.println(f==d);//flase
//例2
float d1 = 2323232334234343434f;
float d2 = d1 +1;
Sysytem.out.println(d1==d2);//true
字符扩展
1. 字符和数字转换(强制转换&unicode)
所有的字符本质上还是数字,可以将字符强制转化位数字
在java中有unicode编码表,将字符和数字对应起来. 0 -65536(2的16次方) 表示范围U0000-UFFFF
char c3 = '\u0061';//表示a
2. 转义字符
\t 制表符
\n 换行
字符串扩展
```java
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//flase
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
布尔值扩展
less is more,代码要精简易读
boolean flag = true;
if(flag == true) //不好
if(flag)//推荐
类型转换
自动转换方式
运算中,不同类型的数据先转换同一类型,然后进行运算
优先级 byte,short,char->int->long->float->double
自动转换方式:运算时自动将数据从低转换到高
强制转换 (类型)变量名
注意点:
1. 不能对布尔值进行转换
2. 不能 吧对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候要强制转换
4. 转换时可能存在内存溢出,或者精度问题
例 int i = 128;
byte b = (int) i;//内存溢出变成-127
System.out.println((int)23.7)//精度丢失
扩展:操作比较打的数的时候注意溢出问题
**JDK7新特性,数字之间可以用下划线分割**
```java
int money = 10_0000_0000;
int year = 20;
int total = year * money; //-1474836480,计算出来溢出了
long total2 = money * years; //仍旧出错,程序会先把乘积计算成int溢出后的值赋值给total2
longt total3 = money * ((long)years);//先把一个数转换为long,再计算乘积;