java基础(根据狂神总结)
java基础(狂神)
注释
-
单行
- //
-
多行
- /* */
-
文档注释(可以加参数)
-
/****
-
/** * @Description helloworld * @Author cheems */ }
-
数据类型
类型
- 基本数据类型
- 数值类
- 整数(查看最大字节大小,通过对应 的类的源码看)
- byte 占1个字节
- short 2
- int 4
- long 8 long的数据后面加上L
- 浮点
- float 4 double的数据后面加上F
- double 8
- 整数(查看最大字节大小,通过对应 的类的源码看)
- 字符
- char 2
- 布尔类
- boolean 1
- 数值类
- 引用数据类型
- String 不是关键词,是一个类
- 类
- 数组
- 接口
补充
-
字节
- 位(bit):是计算机内部储存的最小单位
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B=8bit
- 1bit表示一位
- 1024B=1KB
- 1024KB=1M
- 10224M=1G
-
面试题
-
整数拓展
-
进制:
-
二进制 0b开头
-
十进制
-
八进制 0
-
十六进制 0x
-
public class HelloWorld { public static void main(String[] args) { int a = 010; int a2 = 0b10; int a3=0x10; System.out.println(a); System.out.println(a2); System.out.println(a3); } }
-
结果
-
8
2
16
-
-
-
浮点数
-
浮点数是有限的,离散的,会舍入误差,这样的到的就是大约,接近但不等于
-
因此在银行业务中不能使用浮点数
-
使用BigDecimal这个类
-
public class HelloWorld { public static void main(String[] args) { float f=21356463641F; float f1=f+1; System.out.println(f==f1); } } //true 但是实际上并不相等
-
float f2=0.1F; float f3=1/10; System.out.println(f2==f3); //false 但实际上是相等的
-
-
字符拓展
- 所有的字符本质都是数字
- 本质都是编码集中数字所代表的符号
-
转义字符
- \t 制表符
- \n 换行
-
字符串
-
String s=new String("hello world"); String sd=new String("hello world"); System.out.println(s==sd); String a="hello world"; String a1="hello world"; System.out.println(a==a1); //false //true //内存地址不同
-
-
布尔值
-
boolean flag=true; if(flag){} if(flag==true) //这是一样的
-
-
-
类型转换
-
自动类型转换(容量低的类型转容量高的类型)
- 自动转换不报错
- 不同类型的变量在进行运算时会向上转换,有long就转为long,无long就是int,有浮点,就转为最大的浮点
- 数字不能与字符串进行加运算,而是会将数字变成字符串连接起来
- 查看类型 ,可以在前面加上(String)(a+x),报错就可以看到
-
强制类型转换(容量高的类型转容量低的类型,需要强制转换,不然报错)
-
容量高的类型转容量低的类型,那么就会造成精度丢失,内存溢出等问题
-
int a=128; byte x=(byte) a; System.out.println(a ); System.out.println(x); //内存溢出 //128 //-128 float f=123.45f; float f1=1.1223f; System.out.println((int)f); System.out.println((int )f1); //123 //1 精度丢失
-
注意:
- 不能对布尔值进行转换
- 不能把对象类型转为不相干类型
-
强制类型转换会存在值的溢出
-
public class HelloWorld { public static void main(String[] args) { int a=10_0000_0000; int year=20; System.out.println(a*year); //-1474836480 long total=a*year; //在这里a*year是int,已经成了-1474836480,然后转成了long System.out.println(total); //-1474836480 long total1=a*(long)year; //在乘之前把一个数转成long System.out.println(total1); //20000000000 } }
-
变量
由类型,变量名,作用域组成
- 类型:可以是基本类型也可以是引用类型
- 变量名:必须是合法的标识符
-
- 作用域
- 局部变量:在方法中变量,使用时必须声明和初始化值
- 实例变量:方法外类中,从属于对象,不初始化,就是默认值,布尔是false,int是0,除了基本类型其余都是null
- 使用时必须要依靠对象
- 类变量:在声明时在前面加static(实例变量的基础上),从属于类,可以在类中直接使用
常量
初始化后不能改变的值
final 常量类型 常量名=初始化的值
变量名一般用大写
- 命名规范
- 见名知意
- 类成员变量:首字母小写和驼峰原则
- 局部变量:同上
- 常量:大写字母和下划线
- 类名:首字母大写和驼峰原则
- 方法名:首字母小写和驼峰原则
运算符
/ 除法中若两个int相除,得到的还是int,若想要小数的结果,把一个变成浮点
幂运算:Math类
double a=Math.pow(2,3);
System.out.println(a);
- 逻辑运算:与&& ,或|| ,非!
- 短路运算:一边的运算能决定这个运算的值,就不再运算下一边
- 两边只能是布尔值 ,1/0 不能表示布尔值
位运算
左移>>相当于乘
右移<<相当于除
优先级
使用括号,单目大于双目,
包机制
-
包的命名方式:一般位域名的颠倒(不会重复)
-
导包:import 报名
-
关键词:
- public 导入都可以访问
- default/没写 只有那个包里面的可以访问
- private 只有当前类可以访问
- protect 除了包可以,还有外部如果有子类继承他,也可以访问
javaDoc
-
文档注释
-
使用命令行生成帮助文档: 在xxx.java的文件目录下开启cmd,进行javadoc -encoding UTF-8 -charset UTF-8 java文件名.java ,就会得到一堆html,有个index就是帮助文档了,文档注释中的参数就会在帮助文档中变成说明
-
使用idea生成帮助文档:最上方菜单栏选择工具中的生成javadoc,选择生成范围,生成地址,输入参数确定。