java基础笔记
关键字
Java赋予某些字符特殊的含义
像class public 等等
标识符
- 只能以大小写字母、$、下划线开头, 首字符后随意
- 不能使用关键字
- 大小写敏感
数据类型
基本数据类型
数值类型
整数类型
Byte 占1个字节 -127-128
short 占2个字节
int 占4个字节
long 占8个字节
浮点类型
float 占4个字节
double 占8个字节
字符类型
char 占2个字节
布尔类型
boolean 占一位 只有两个值 true false
引用类型
类
接口
数组
字节相关
位(bit):计算机中数据存储最小单位
字节(byte)计算机中数据处理的基本单位 B表示
1B=8bit
1024B=1KB
1024KB=1M
1024M=1G
拓展知识
整数拓展
进制 二进制0b 十进制 八进制0 十六进制0x
浮点数拓展
最好完全避免使用浮点数进行比较 (有限 离散 舍入误差 大约 接近但不等于)
像银行业务 会用到数学工具类 BigDecimal
字符拓展
所有的字符本质还是数字
char c1='a';
char c2='字';
int i1=(int)c1;//强制转换
int i2=(int)c2;//强制转换
//编码 Unicode 2字节
char c3='\u0061';
转义字符
// \t 制表符
// \n 换行
类型转换
不同类型的数据 先进行转换在进行计算
低---------------------------------------------高
byte,short,char -> int -> long -> float -> double
注意点
- 不能对布尔类型进行转换
- 不能把对象类型转换为不相干的类型
- 高转低时 需要强制转换 :(类型)变量 ,低转高 自动转换
- 转换的时候可能会存在内存溢出,或者精度问题
//操作比较大数字时 注意溢出
int money = 10_0000_1000;
int year = 20;
long total = money*year;//错误 输出结果会溢出 转换之前已经存在问题
long total = money*((long)year);//正确
//精度问题
double d = 20.20;
int i = (int)d;//结果为20 精度丢失
变量 常量 作用域
变量
变量就是可以变化的量,是程序中最基本的存储单元,要素包含变量名、变量类型、作用域
变量作用域
- 类变量:写在类里 用static修饰
- 局部变量:写在方法中,必须初始化值
- 实例变量 :写在类里,不用static修饰
常量
初始化后不会在改变的值,一般用大写字符表示,用final 修饰
运算符
工具类:Math
- 算数运算符 + ,- ,*, / ,++, – ,%
- 赋值运算符 =
- 关系运算符<,>,>=,<=,!=,==
- 逻辑运算符 && ,||, !
- 条件运算符 ?:
- 位运算符 & ,|,^,~,>>,<<
- 扩展赋值运算符 +=,-=,*=,/=
如果多种基本类型进行加减的时候 有long 的类型 结果就为long 的类型 ,没有的话结果为int类型
a&&b 存在短路运算 a如果为假,b不会执行
int a = 1;
int b = a++;//先赋值后自增
int c = ++a;//先自增后赋值
//结果
a = 3; b = 1; c = 3
//二进制 效率高
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 两个都为1 才是1 否则为0
A|B = 0011 1101 两个都为0 才是0 否则为1
A^B = 0011 0001 两个相同为0 否则为1
~B = 1111 0010 反
>>右移 /2 8>>2 = 2
<<左移 *2 2<<3 = 16
//字符串连接符 +
int a = 10;
int b = 20;
String s1 = ""+a+b;
String s2 = a+b+"";
//结果
s1 = 1020;
s2 = 30;
//x?y:z
//x为true 结果为y,否则为z