1.2 Java基础语法——数据类型
1. 基本类型(primitive type)
java八大基本数据类型使用示例:
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 127; //byte ~127
short num3 = 30;
long num4 = 30L; //Long类型要在数字后面加个L
//小数:浮点数
float num5 = 50.1F; //float类型要在数字后面加个F
double num6 = 3.14159265358979323846643;
//字符
char name = 'A';
//字符串,String不是关键字,是类
String namea = "张三";
//布尔值:是非
boolean flag = true;
//boolean flag=false;
2.引用类型(reference type)
类、接口、数组
(每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 中是通过指针,而在 Java 中则是通过“引用”。)
拓展——整数、浮点数、字符、转义字符、布尔值
public class Demo03 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x10;//十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("=====================================");
//==============================================================
//浮点数拓展 银行业务怎么表示?钱(面试题思考)
//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);
System.out.println(d);
float d1 = 2312232232323f;
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 表:(97=a 65=A) 2字节 0 - 65536 Excel 2^16=65536
// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符拓展
// \t 制表符
// \n 换行符
//......
System.out.println("Hello\tWorld");
System.out.println("=====================================");
String sa = new String("hello world");//new了一个新的地址区域
String sb = new String("hello world");
System.out.println(sa==sb);//false ps:堆内存的地址不一样
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true ps:同一个常量池
//对象 从内存分析 ps:第一个是分配的堆内存中,第二个是常量池中
//比较的对象是基本数据类型,则比较的是数值是否一致;
//如果比较的是引用数据类型,则比较的是对象的地址值
//布尔值拓展
boolean flag = true;
if(flag==true){} //if(flag)
// Less is more! 代码要精简易读
}
}
运行结果:
10
8
16
=====================================
false
0.1
0.1
true
a
97
中
20013
a
Hello World
=====================================
false
true
Process finished with exit code 0
ps:类型转换见 1.3Java基础——类型转换