Java-003-数据类型的详解(整数,浮点, Boolean),基本类型的转换,运算符
1.Java整型包括:byte / short / int / long
Java语言整数型常量有三种表示方法
◆十进制
◆八进制,八进制0开头,如:013
◆十六进制,十六进制0x开头,如:0X23
Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如long l =999999999L
2.字符编码:
public class CharType { public static void main(String[] argv){ /* char类型 char是字符类型 java中采用 UNICODE编码 底层占两个字节 char类型涉及到字符编码方式 1.字符编码方式是现实世界中的文件和计算机的表示方式的转换规则 ASCII 'a' 97 'A' 65 '0' 48 对应的二进制是多少 IOS-8859-1 GB2312 < GBK < GB18030 从容量上看,是包含关系 unicode utf-8, uft-16 ,utf-32 2.如果字符采用的编码和解码不一致的时候,就会出现乱码 */ char i = 'a'; int j = '7'; //char k = 'ab'; //错误写法 char m = '中'; char t = 't'; System.out.println("i == " + i + " j == " + j + " m == " + m + " t == " + t); //斜线在Java语言中的转移功能,可以将普通t字符,转换成"制表符" char b = '\t';//相当于电脑键盘的Tab键 System.out.println("b==" + b);//输出为一个制表符 System.out.println("My Name is Steven"); //Java中一个普通的"单引号"字符 char k = '\''; System.out.println("k == " + k); //Java中一个普通的"斜线"字符 char l = '\\'; System.out.println("l == " + l); //Java中一个普通的"双引号"字符 char n = '\"'; System.out.println("n == " + n); //Java中一个普通的换行符 char o = '\n';//相当于键盘回车键 System.out.println("StevenA"); //System.out.println(o); System.out.println("");//print 不换行,println换行 System.out.println("StevenB"); /* 输出结果为: i == a j == 55 m == 中 t == t b== My Name is Steven k == ' l == \ n == " StevenA StevenB */ } }
3.布尔类型:
public class DataTypeBool { /* java中的布尔类型 1.只有两个值:true/false 没有 0和1 2.主要用在 逻辑运算符和条件控制语句中 */ public static void main(String[] argv) { //boolean i = 1; // Error:(9, 23) java: 不兼容的类型: int无法转换为boolean boolean sex = true; if (sex) { System.out.println("男人");//输出结果:男人 }else { System.out.println("女人"+sex); } System.out.println("sex =="+sex);//输出结果为:sex ==true } }
4.浮点型:
public class DataTypeFloat { //Java浮点型: float/double 默认为double //float 4个字节 double 8个字节 public static void main(String[] argv) { double i = 1.2; //强制类型转换 float y = (float)i; //自动赋值运算符(浮点型) float x = 1.2F; System.out.println("i == " + i + " y == " + y + " x == " + x);//结果为:i == 1.2 y == 1.2 x == 1.2 } }
5.类型转换:
public class TransformDataType { /* 关于Java语言中的整形数据 byte 1byte(8bit)-128 127 short 2byte int 4byte long 8byte 整数型有三种表示方式 1.十进制 2.八进制以0开头 3.十六进制以0x开头 */ public static void main(String[] argv) { //十进制 int i = 10; // 常用类型 //八进制 int j = 010; //十六进制 int k = 0x10; System.out.println("i == " + i); System.out.println("j == " + j); System.out.println("k == " + k); /* 输出结果为: i == 10 j == 8 k == 16 */ //将一个Int类型 100字面量值赋值给m 变量 int m = 100; System.out.println("m == " + m); //将int类型150字面值赋值给1ong类型的n // int类型的容量小于long类型 //默认已经存在数据类转换,只不过是"自动类型转换" long n = 50; //由于出现了"L",就会把160看成long类型 //以下程序不存在类型转换,只是一个普通的赋值运算 long x = 160L; System.out.println("n == " + n); System.out.println("x == " + x); //强制类型转换 //①long 类型转换为 int 类型 int y = (int) 160L;//不加(int)报错 Error:(46, 17) java: 不兼容的类型: 从long转换到int可能会有损失 //②可以将int类型转换成 long类型 "自动类型转换" long z = 234233633;//前提是int类型的值小于2^31-1 //什么时候使用"L"或者"l",建议使用"L"//如果该数值大于2~31-1就用L,并且是1ong类型 long t = 321213123L; System.out.println("y == " + y); System.out.println("z == " + z); System.out.println("t == " + t); /* Byte类型 */ long a = 1000L; //不能自动转换 //需要强制类型转换,添加强制类型转换符() //添加(int)后,编译通过了,但是程序在运行阶段可能损失精度,所以一定要谨慎使用 //大容量long向小容量转换,需要强制类型转换 int b = (int)a; System.out.println("b == " + b);//b == 1000 //byte 取值范围(-128 ~ 127) byte c = 10; byte d = 127; //byte e = 128; //错误写法,超出范围 System.out.println("c == " + c); //short 取值范围 (-32768 ~ 32767) short f = 23423; System.out.println("f == " + f); //char 等,没有超出范围都可以赋值 (char取值范围 (0 ~ 65535) ) char g = 90; char u = 65531; int v = 58787; //char w = v; System.out.println("u == " + u); //总结: //如果整数没有超出byte,short, char取值范围,可以直接将这个整数赋值给byte,short,char } }
5.混合运算:
public class DataTypeMix { //byte,short,char 做混合运算的时候,需要先各自转换成int 再做运算 public static void main(String[] argv){ byte i = 10; byte j = 20; int k = i + j ; System.out.println("k == " + k);//结果: k == 30 /* java在运行的时候分为两个时期 1.编译期 2.运行期 在编译阶段只知道 i + j 是 int 类型 int 类型无法直接赋值给 byte类型 */ byte m = (byte)(i + j); byte n = 100; System.out.println("m == " + m + " n == " + n); //输出结果为:m == 30 n == 100 /* 在java中基本类型可以相互转换, boolean类型比较特殊不可以转换成其他类型 转换分为默认转换和强制转换: 默认转换:容量小的类型会默认转换为容量大的类型 byte--short--> int--> long--> float-->double char--> byte、 short、char之间计算不会互相转换,首先先转换成int 强制转换将容量大的类型转换成容量小的类型,需要进行强制转换 注意:只要不超出范围可以将整型值直接赋值给byte, short,char 在多种类型混合运算过程中,首先先将所有数据转换成容量最大的那种,再运算 */ } }