强类型语言
要求变量的使用严格符合规定,所有变量都必须先定义后使用
弱类型语言
没有严格的规定
Java的数据类型分为两大类
基本类型
引用类型
public class Demo01 { //八大基本数据类型 //整数 int num1 = 10; //最常用 byte num2 = 20; short num3 = 30; long num4 = 40L; //Long类型要在数字后面加L //小数:浮点数 float num5 = 50.1F; double num6 = 3.116927; //字符 char num7 = '中';//代表一个字 //字符串,String不是关键字,是类 String name = "汉青"; //布尔值:true和false boolean flag = true; }
public class Demo03 { public static void main(String[] args) { //整数拓展: 进制 --> 二进制0b 八进制0 十进制 十六进制0x int i = 10; int i2 = 010; //八进制0 int i3 = 0x10; //十六进制0x 0~9 A~F System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println("===================================================="); //================================================================ //浮点数拓展:银行业务怎么表示 使用BigDecimal //================================================================ //float 有限 离散 舍入误差 大约 接近但不等于 float f = 0.1f;//0.1 //double 最好完全避免使用浮点数进行比较 double d = 1.0/10;//0.1 System.out.println(f==d);//false float f1 = 2113133131f; float f2 = f1 + 1; System.out.println(f1 == f2);//true } }
public class Demo04 { public static void main(String[] args) { //字符拓展 char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1);//强制转换 System.out.println(c2); System.out.println((int)c2);//强制转换 //所有的字符本质上还是数字 //编码 Unicode //U0000 UFFFF char c3 = '\u0061'; System.out.println(c3);//a //转义字符 //\t 制表符 \n 换行 } }
public class Demo05 { public static void main(String[] args) { //通过内存分析 String sa = new String("Hello world"); String sb = new String("Hello world"); System.out.println(sa == sb);//false String a = "Hello world"; String b = "Hello world"; System.out.println(a == b);//true //布尔值拓展 //less is more java要精简易懂 boolean flag = true; if (flag){} //if(flag == true){} } }
将精度高的转换为精度低的
注意:会出现精度丢失的情况
当出现精度低的要转换成精度高的时候,无需手动操作,java虚拟机会自动执行
不会出现精度丢失
public class Demo06 { public static void main(String[] args){ //强制转换 (类型)变量名 高--->低 int i = 128; byte b = (byte)i; System.out.println(i); System.out.println(b); // -128 内存溢出 //自动转换 (类型)变量名 低--->高 /* 注意点: 1. 不能对布尔值进行转换 2. 不能把对象转换为不相干的类型 3. 在把高容量转到低容量的时候,强制转换 4. 转换的时候可能存在内存溢出,或精度问题 */ System.out.println((int)23.5);//23 System.out.println((int)-45.38f);//-45 } }
public class Demo07 { public static void main(String[] args) { //操作比较大的数字的时候,注意溢出问题 //JDK7新特性,数字之间可以使用下划线来分割 int money = 10_0000_0000; int year = 20; int total = money * year; //-1474836480 计算的时候就出现精度溢出的问题 long total2 = money * year; //-1474836480 默认的是int,转换的时候已经存在问题 long total3 = (long)money * year;//需要先把一个数转换为long类型 System.out.println(total3);//20000000000 } }