Java基础语法
二、数据类型扩展
public class DataTypeExtension {
public static void main(String[] args) {
//整数拓展 进制问题:二进制0b 十进制 八进制0 十六进制0x
int i1 = 10; //十进制
int i2 = 010; //八进制
int i3 = 0b10; //二进制
int i4 = 0x17; //十六进制 0~9 A~F //逢16进1,0x17=16+7=23
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
//浮点数拓展
float f = 0.1f;
double d = 1.0/10;
System.out.println(f == d);//这里可以用来判断 f 是否等于 d
//为何输出是false
float f1 = 1212131342131213131f;
float f2 = f1 + 1;
System.out.println(f1 == f2);
//为何输出是true
/*
* float表示的字长是有限的,存在舍入误差,最好不要用浮点数进行比较
* 如果需要没有误差的计算比较,可以用 Bigdecimal(数学工具类),这是一个Java已经写好的类
* */
//字符拓展
char c1 = 'A';
char c2 = '中';
//强制转换
System.out.println((int)c1);//65
System.out.println((int)c2);//20013
char c3 = '\u0061'; //Unicode编码
System.out.println(c3); //a
//转义字符
/*
\t 水平制表符
\n 换行符
\\ 反斜杠\
\? 问号字符
\' 单引号字符
\" 双引号字符
\ \后面跟着三个及以内的数字是八进制转义字符
\012表示10
\x \x后面跟着两个及以内的数字是十六进制转义字符
\x14表示20
*/
System.out.println("Hello\tWorld!");// \t 制表符
System.out.println("Hello\nWorld!");// \n 换行符
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
//new是开辟一个新的空间,上面比较的是地址,下面比较的是内容
//布尔值扩展
boolean flag = true;
}
}
三、类型转换
public class TypeConversion {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//强制转换
System.out.println(i);//128
System.out.println(b);//-128内存溢出
//原因:byte范围是-128~127,类型转换时要注意避免内存溢出
//byte、short、char——>int——>long——>float——>double
// 低————————————————————————————————————>高
//强制类型转换:高->低
//自动类型转换:低->高
int a = 128;
double d = a;//自动转换
//不能对布尔值进行转换,因为bool值是按位进行计算的
System.out.println((int)23.6);//23
System.out.println((int)-49.87f);//-49
char c = 'a';
int e = c + 1;
System.out.println(e);
System.out.println((char)e);
int money = 10_0000_0000;
int year = 20;
int total1 = money*year; //-1474836480溢出
long total2 = money*year;//-1474836480溢出,因为赋值之前就已经出问题了
long total3 = money*(long)year;//20000000000正解
System.out.println(total1);
System.out.println(total2);
System.out.println(total3);
}
}