Java数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
弱类型语言
Java的数据类型分为两大类
-
基本类型(primitive type)
-
数值类型
- 整数类型
- byte占1个字节范围:-128 - 127
- short占两个字节范围:-32768 - 32767
- int占4个字节范围:-2147483648 - 2147483647
- long占8个字节范围:-9223372036854775808 - 9223372036854775807
- 浮点类型
- float占4个字节
- double占8个字节
- 字符型
- char占2个字节
-
boolean类型(布尔型)
- 占一位,其值只有true和false两个
-
-
引用类型(reference type)
- 类
- 接口
- 数组
public class Demo02 {
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 40L;//Long类型要在数字后面加L
//小数:浮点数
float num5 = 50.1F;//Lfloat类型要在数字后面加F
double num6 = 3.141592653589793238462643;
//字符
char name = 'A';
//字符串,String不似乎关键字,类
//String namea = "嘿嘿嘿"
//布尔值
boolean flag = true;
boolean flag1 = false;
}
}
什么是字节
-
位(bit):是计算机内部数据储存的最小单位 11001100是一个八位2进制数
-
字节(byte):是计算机中数据处理的基本单位,习惯用大写B表示
-
1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母,数字,字,符号
-
1bit表示1位
-
1Byte便是一个字节 1B=8b
-
1024b=1kb
-
1024kb=1M
-
1024MB=1G
-
1024GB=1T
数据类型拓展
public class Demo03 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制
int i3 = 0x10;//十六进制 0~9 A~F
System.out.println(i);
System.out.println(i2);//8
System.out.println(i3);//16
System.out.println("=================================");
//=================
//浮点数扩展?银行业务怎么表示?钱
//BigDecimal 数学工具类
//==================
//float 有限 离散 舍入误差 接近但不等于
//double
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
//最好完全使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//false
System.out.println(f);
System.out.println(d);
float d1 = 212312313131313f;
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);//强制执行
//所有的字符本质还是数字
//编码 Ubicode 表:97 = a 65 = A 2字节 0 - 65536 Excel 2^16=65536
//U000 UFFF
char c3 = '\u0061';
System.out.println(c3);//a
//转义字符
// \t 制表符
// \n 换行
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
//
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){//老手
System.out.println("true");
}
//Less is More 代码要精简易读
}
}
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低--------------------------------------------------------------高
byte,short,char -> int -> long- > float -> double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算
-
强制类型转换
-
自动类型转换
public class Demo04 {
public static void main(String[] args) {
int i = 129;
byte b = (byte)i;//内存溢出
//强制转换 (类型)变量名 高--低
//自动转换 低--高
double c = i;
System.out.println(i);
System.out.println(b);
System.out.println(c);
/*
注意点:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 再把高容量转换到低容量的时候 强制转换
4. 转换的时候可能存在内存溢出或者精度问题
*/
System.out.println("======================================");
System.out.println((int)23.7);
System.out.println((int)-45.89f);
System.out.println("======================================");
char t = 'a';
int d = t+1;
System.out.println(d);
System.out.println((char)d);
}
}
public class Demo05 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int year = 20;
int total = money*year;//-1474836480 计算的时候溢出了
long total2 = money*year;//默认是int,转换之前已经存在问题了
long total3 = money*((long)year);//先把一个数转换为long
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}