java基础
1 、编译与运行
在学习java的时候,一开始肯定是在控制台上手动的进行编译与运行,这里记录一下这两个方法
- 编译
javac BreakDetail.java
- 运行
java BreakDetail
2、数据类型与包装类
- 基本数据类型所占的空间字节大小
| 类型 | 初始容量 | 内存中空间(字节) | 包装类 |
|---|---|---|---|
| byte【字节】 | 0 | 1 | Byte |
| short | 0 | 2 | Short |
| int | 0 | 4 | Integer |
| long | \u0000(十六进行表示0字符) | 8 | Long |
| float | false | 4 | Float |
| double | 0.0 | 8 | Double |
| boolean | 0.0 | 1 | Boolean |
| char | 0 | 2 | Character |
- 基本数据类型转引用数据类型,以int-> Integer , Integer ->int 为例(一次类推):
int-> Integer :调用了Integer的ValueOf方法
Integer ->int:调用了Integer的intValue()方法
浮点数
- 浮点数的相等比较
确定浮点数的精度,进行减法比较,不能直接==比较
例如:钱 最小精度为0.01 3.010钱 与 3.012 是否相等
double a = 3.010;
double b = 3.012;
if(a-b<0.01) {System.out.pring("相等!")}
- 浮点数的存放机制
浮点数在机器中的存放形式:浮点数= 符号位+指数位+尾数位
5.12e2=512
5.12E-2=0.0512 e,E就是10的意思
精度推荐使用double,准确狠多
字符char
- 关于字符编码
unicode编码:两个字节表示一个字符
utf-8:大小可变的编码,一个字母使用一个字节,汉字使用两个字节;
gbk:表示汉字,一个字母使用一个字节,汉字使用两个字节;
big5:表达繁体中文。
- 字符与数字的转换
char a = 98;
System.out.println(a); // b
char c1 = a;
System.out.println((int)c1); // 98
char c2= 98;
System.out.println(c2);// b
混合运算时需要注意
-
混合运算时,系统会将所有数据类型转化为最大容量的数据类型;
-
浮点:1.1 会转化为double ,1 会转化为int,byte,short这些如果进行混合运算会自动转化为int,如果接受类型是byte、short、char就会报错!
int a = a;
float b = a+1.1; // 报错,类型是double ,1.1F即可
-
(byte、short)和char不能自动转化
int a =1;
byte b =a;
// 报错,如果是赋值变量直接判断类型;
byte c=2;
short d = 3;
byte f = c+d; // 报错
- 数字与字符串的转化,两种方法
方法1:直接相加
方法2:通过包装类的parse方法
String a = "1";
int i = Integer.parseInt(a);
- 复合运算符运算会进行类型转化
+= 会将右边的表达式强制转换为左边的数据类型
byte b = 3;
b+=2; // 等价于 b= (byte)(b+2);
b++; // 等价于 b=b+1;
break与return的细节
- break可以直接退出当前循环,并不是所有循环
- break中label的使用(不建议使用)
lable1:
for (int i = 0; i < 5; i++) {
lable2:
for (int j = 0; j < 10; j++) {
if(i==2) {
break lable2;
}
}
}
定义lable可以使用break退出指定label,不建议使用,降低代码的可读性
return细节
- 用在方法中,跳出方法
- 用在main方法中,退出程序
基本数据类型与引用数据类型在jvm中的存储
- 基本数据类型存储在栈中
- 引用数据类型地址在栈中,具体数据在堆中,也可能存在常量池,例如String
- 创建的引用数据类型:String、数组、类、接口