1注释
注释本不会被执行,是写给我们写代码的人看的
单行注释
//单行注释
多行注释
/*
多行注释
*/
文档注释
/**
* @Description helloworld 代表一个描述
* @Author 狂神说 代表作者
*
*/
2.标识符
Java 所有的组成部分都需要名字。类名,变量名,以及方法名都被称为标识符。
所有的标识符都应该以A-Z或者a-z,美元符号$,下划线_ 开始。
java自己定义的关键字:
3.数据类型
强类型语言:要求变量的使用符合规定,所有变量都必须先定义后裔才能使用。
弱类型:js,javascript
强类型语言安全,但是速度慢!
java是一种强类型语言,要求严格
基本数据类型 (primitive type)
四类八种
-
整数型:byte(1字节),
shout(2字节),
int(4字节),
long(8字节)long类型要在后面加L(也可以省略,超出int范围后需要加L),
-
浮点型:float(4字节),float类型,要在数字后面加f
double(8字节 )
-
字符型:char(2字节) String是类不是基本数据类型 一个字符代表一个字
-
布尔型:boolean (1字节) 是非对错
引用类型 (reference type)
除了基本数据类型之外,都属于引用数据类型
1. 类
2. 接口
3. 数组
4. 枚举 -
4.什么是字节
1.位(bit): 是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
2.字节(byte): 是计算机中数据处理的基本单位,习惯用大写B来表示。
3.1B (byte,字节 )= 8bit (位)。
4.字符: 是计算机中使用的字母,数字,字和符号。
常见单位换算
- 1bit表示1位
- 1Byte表示一个字节 1B = 8b
- 1024B = 1KB
- 1024kb = 1M
- 1024M = 1G
- 1024G = 1TB
为什么一个字节是-128~127
首先,一个字节有8位二进制位,理论上可以储存的数量为 2^8 即256。由于数字需要进行相应的运算(+ - * / …),所以我们希望256个数里面能够包含相应的负数,然而二进制本身没有表示负数。
所以,规定字节的第一个位是符号位,并且0表示正数,1表示负数。比如001001011表示正数,110100011表示负数。
这样一来,正数就能表示 2^7 即 127 ~ 0 之间的数,负数则能表示 - 2^7 即 -127 ~ 0 之间的数字。这就对于0的存储出现了重复, “+0” 即00000000 和 “-0” 即10000000。逻辑上来说 “+0” 和 “-0”同时存在,显然不合理,存储上来说 “+0” 和 “-0” 表示一个数但是占用了两个存储位,也不合理。
既然0重复不合理,那么是否可以只保留一种作为0的表示,另外一种作为其他数的表示呢?如果可以的话,不就解决了逻辑上和存储上的问题了吗?
那么到底是保留 “+0” 还是 保留 “-0” 呢?去除掉的那个“0”又表示什么数呢?首先,当前一个字节已经可以保存 127 ~ -127 (0重复) 即255个数。对于额外保存的数,我们当然是希望保存这个范围之外的数,并且最好“接壤” 127 ~ -127这个范围,那么优先考虑 128 和 -128。我们知道,字节的存储其实是使用补码来表示的,-127的补码是 10000001,这个数字 减1 刚好是 “-0” 10000000,-127 减1 等于 -128,所以这里将 “-0” 10000000 表示 -128 最合适。
所以,最后一字节的数表示范围就是 127 ~ -128 (256个数)。另外,像KB, MB, GB…都类似于这种存储方式。
#### 电脑的32位跟64位法人区别
- 计算机里面有一个寻址能力,跟计算机的32位和64位直接挂钩的
- 32位只能装32位系统,64位可以装64位也可以装32位的系统
- 64位最多可以支持128G内存
- 32位最多支持4GB内存
5.进制问题
进制说明
1. 二进制: 0b
2. 十进制 : 默认
3. 八进制 : 0 逢八进一
4. 十六进制 : 0x 逢十六进 一
银行业务用什么表示? 用BigDecimal 数学工具类
不能使用浮点数。
- float:
浮点数是有限的舍入误差,大约,接近但不等于
-
double:
最好完全(避免)使用浮点数进行比较
最好完全(避免)使用浮点数进行比较
最好完全(避免)使用浮点数进行比较
整数扩展
//整数扩展: 进制 二进制ob 十进制 八进制0 十六进制0x
int i = 10; //整数
int i2 = 010;//八进制0
int i3 = 0x10; //十六进制0x 0~9 A~F F相当于16
System.out.println(i); //10
System.out.println(i2);//8
System.out.println(i3);//16
字符类扩展
//浮点数扩展? 银行业务怎么表示? 钱
//bigDecimal 数学工具类
//float 表现的字长是有限的 离散的 会存在舍入误差 结果是个大约数 接近但不等于
//double
//最好完全(避免)使用浮点数进行比较
//最好完全(避免)使用浮点数进行比较
//最好完全(避免)使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false
System.out.println(f);//0.1
System.out.println(d);//0.1
float d1 = 2313131313131f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
字符类扩展
//字符类扩展?
char c1 = 'a';//可以是一个英文字符
char c2 = '中';//也可以是一个中文字符
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
//所有的字符本质都是数字
//编码 Unicode 2字节 最多可以表示 :0~65536个字符 Excel最多只有2^16次方 = 65536
//编码 Unicode 表: (97 = a 65 = A)
//编码 Unicode 范围:U0000 ~ UFFFF
char c3 = '\u0061';//Unicode表达方式
System.out.println(c3);
转义字符
//转义字符
//\t 制表符 表示:空格
//\n 表示:换行
//。。。。。更多的转义字符 自己去查
System.out.println("Hello\tworle");
System.out.println("Hello\nworle");
//
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if(flag == true){}//新手
if(flag){} //老手
//两行代码判断是一样的
//less is more 代码要精简易读