Study05:关键字、数据类型
Java常用关键字
abstract | asert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronezed | this | throw | throws |
transient | try | void | volatile | while |
数据类型
//八大基本数据类型
//整数类型
int num1 = 10; //最常用
byte num2 = 20; //最小
short num3 = 30;
long num4 = 40L; //最长,Long类型要在数字后加个 L
//小数:浮点类型
float num5 = 50.5F; //float类型要在数字后加个F
double num6 = 6.666666666;
//字符类型
char name = 'A';
//字符串,String不是关键字,是一个类
String name1 = "一呆";
//布尔值:是非
boolean flag = true;
//boolean flag = false;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
System.out.println(num6);
System.out.println(name);
System.out.println(name1);
System.out.println(flag);
//整数拓展:
//进制: 二进制0b 十进制 八进制0 十六进制0x
int a = 10;
int b = 0b10; //表示这个10是二进制的数
int c = 010; //表示这个10是八进制的数
int d = 0x10; //表示这个10是十六进制的数 0~9 A~F(10~15)
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
//浮点数拓展: 如何表示银行业务?
//float 有限的 离散的 存在舍入误差 大约 接近但不等于
//double
float e0 = 0.1f; //0.1
float e = 0.1f; //0.1
double f = 0.1; //0.1
System.out.println(e0==e); // == 表示判断是否相等
//输出结果位true
System.out.println(e==f);
//输出结果为false
float e1 = 66666666666666f;
float e2 = e1+1;
System.out.println(e1==e2); //输出结果为true
//最好不用浮点数进行比较
//最好不用浮点数进行比较
//最好不用浮点数进行比较
//BigDecimal 数学工具类
//字符拓展:
char c1 = 'a';
char C1 = 'A';
char c2 = '一';
System.out.println(c1);
System.out.println((int) c1); //强制类型转换 将char类转换为int类
System.out.println(C1);
System.out.println((int) C1); //强制类型转换 将char类转换为int类
System.out.println(c2);
System.out.println((int) c2); //强制类型转换 将char类转换为int类
//所有的字符本质还是数字
//编码问题 Unicode编码(可以处理各种语言的编码)(a=97 A=65) 占2字节 可表示0~65536 Excel 2^16=65536
//U0000~UFFFF
char c3 = '\u0061'; // \\u代表转义 Unicode编码表示方式
System.out.println(c3); //输出a
//转义字符
// \t:表示空格 制表符
// \n:表示换行
// \r:表示将当前位置移到本行开头
// \b:表示将当前位置往前移动一格
//......
System.out.println("Hello\tWorld!");
System.out.println("Hello\nWorld!");
System.out.println("Hello\rWorld!");
System.out.println("Hello\bWorld!");
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){} //老手
//less is more! 代码要精简易读
类型转换
运算中,不同类型的数据先转换为同一类型再进行运算
从低----------------------------------------------------------->高进行转换
byte,short,char--->int--->long--->float--->double
小数的优先级一定大于整数
int i1 = 128;
byte i2 = (byte) i1; //强制转换 byte类型最大为127 内存溢出
double i3 = i1; //自动转换
//强制类型转换 (类型)变量名 高——低
//自动转换 低——高
/*
* 注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干类型
* 3.高转低,强制转换
* 4.转换是可能存在内存溢出或精度问题
* */
//操作比较大的数的时候要注意溢出问题
//JDK新特性:数字之间可以使用下划线分割,不会输出
int money = 1_000_000_000;
int years = 10;
int total1 = money*years;
long total2 = money*years; //默认为int类型
long total3 = money*(long)years;//先将其中一个类型转换为long
System.out.println(money);
System.out.println(total1); //1410065408 计算溢出
System.out.println(total2); //先用int类型进行计算再用long输出,输出的数据依旧是错误计算之后的
System.out.println(total3);