Java数据类型
Java是强类型语言,要求变量的使用要严格符合规定,所有变量必须先定义后才能使用。
这里我们看一下什么是请类型语言和弱类型语言:
强类型语言
强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、C++等语言。
例如你有一个整数,如果不显式地进行转换,你不能将其视为一个字符串。
弱类型语言
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。
Java的数据类型分为两大类
这里我们先了解一下什么是字节:
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
字节(Byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
1B(Byte,字节)=8bit(位)
字符:是指计算机中使用的字母、数字、字和符号。
1bit表示1位
1Byte表示一个字节 1B=8b
1024B=1KB
1024KB=1MB
1024MB=1GB
基本数据类型(Primitive Type)
- 数值型
- 整数类型
- byte 占一个字节:-128~127
- short 占2个字节:-32768~32767
- int 占4个字节:-2147483648~2147483647
- long 占8个字节:-9223372036854775808~9223372036854775807
- 浮点型
- float 占4个字节
- double 占8个字节
- 整数类型
- 字符型
- char 占2个字节
- boolean类型
- 占1位,其值只有true和false两个
示例如下:
public class Demo1 {
public static void main(String[] args) {
//八大基本书记类型
byte num1 = 10;
int num2 = 20; //最常用
short num3 = 30;
long num4 = 40L; //long类型要在数字后面加个L
//小数:浮点型
float num5 = 10.5F;
double num6 = 3.141592653589793238462643;
//字符
char name = 'A';
//boolean型
boolean flag = true;
}
}
引用数据类型(Refecence Type)
- 类
- 接口
- 数组
这些后续接触。
数据类型扩展
public class Demo2 {
public static void main(String[] args) {
//整数扩展: 进制 二进制:0b 十进制 八进制:0 十六进制0x
int i = 10;
int i2 = 010; //八进制
int i3 = 0x10; //十六进制
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
float d1 = 3232323232213f;
float d2 = d1 + 1 ;
System.out.println(d1==d2); //true
//================================================
//字符扩展
//================================================
System.out.println("=============================");
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字节
//由U0000~UFFFF表示
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符
//\t 制表符
//\n 换行
//...
System.out.println("Hello\nWorld");
System.out.println("===========================");
String sa = new String("Hello World");
String sb = new String("Hello World");
System.out.println(sa==sb);//false
String sc = "Hello World";
String sd = "Hello World";
System.out.println(sc==sd);//true
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if (flag == true){}
if (flag){}
//逻辑是一样的
//代码要精简易读!
}
}