最重要人和机器沟通,计算机底层物流实现只有0和1
要把人类语言表达翻译成计算机能识别的0和1
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。
在Java中是区分大小写的,而且还要求首位不能是数字。
最重要的是,Java关键字不能当作Java标识符。
类和接口名。每个字的首字母大写,含有大小写。
例如,MyClass,HelloWorld,Time等。
方法名。首字符小写,其余的首字母大写,含大小写。尽量少用下划线。
例如,myName,setTime等。这种命名方法叫做驼峰式命名。
常量名。基本数据类型的常量名使用全部大写字母,字与字之间用下划线分隔。对象常量可大小混写。
例如,SIZE_NAME。
变量名。可大小写混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,少用美元符号。给变量命名是尽量做到见名知义。
四、数据类型 基本数据类型(8种):int、byte、short、long、double、float、char、boolean 引用数据类型:对象、数组 (一)基本数据类型:Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
1、整数型类型 | 二进制位数 | 字节数 | 最小值 | 最大值 | 默认值 | 例子 |
---|---|---|---|---|---|---|
byte | 8位 | 1 | -128(-2^7) | 127(2^7-1) | 0 | byte a = 100,byte b = -50 |
short | 16位 | 2 | -32768 | 32767 | 0 | short s = 1000,short r = -20000 |
int | 32位 | 4 | -2147483648 | 2147483647 | 0 | int a = 100000, int b = -200000 |
long | 64位 | 8 | -9223372036854775808 | 9223372036854775807 | 0L | long a = 100000L,Long b = -200000L |
类型 | 二进制位数 | 字节数 | 最小值 | 最大值 | 默认值 | 例子 |
---|---|---|---|---|---|---|
float | 单精度、32位 | 4 | 1.4E-45 | 3.4028235E38 | 0.0f | float f1 = 234.5f |
double | 双精度、64位 | 8 | 4.9E-324 | 1.7976931348623157E308 | 0.0d | double d1 = 123.4 |
数据来源代码演示:
package cn.daniel.hello;
public class Test1 {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("最小值:" + Byte.MIN_VALUE);
System.out.println("最大值:" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("最小值:" + Short.MIN_VALUE);
System.out.println("最大值:" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("最小值:" + Integer.MIN_VALUE);
System.out.println("最大值:" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("最小值:" + Long.MIN_VALUE);
System.out.println("最大值:" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("最小值:" + Float.MIN_VALUE);
System.out.println("最大值:" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("最小值:" + Double.MIN_VALUE);
System.out.println("最大值:" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:"
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:"
+ (int) Character.MAX_VALUE);
}
}
console控制台显示结果:
基本类型:byte 二进制位数:8
最小值:-128
最大值:127
基本类型:short 二进制位数:16
最小值:-32768
最大值:32767
基本类型:int 二进制位数:32
最小值:-2147483648
最大值:2147483647
基本类型:long 二进制位数:64
最小值:-9223372036854775808
最大值:9223372036854775807
基本类型:float 二进制位数:32
最小值:1.4E-45
最大值:3.4028235E38
基本类型:double 二进制位数:64
最小值:4.9E-324
最大值:1.7976931348623157E308
基本类型:char 二进制位数:16
最小值:0
最大值:65535
Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14
× 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。
问题:整数有4个类型,一个不就够了吗?为什么要4个呢?
内存是一个有限稀缺资源,设计程序时,尽量减少内存占用。ASCII码表的作用:
把人类字母翻译成计算机0或1java为了支持传统开发方式,非面向对象方式,同时,为了计算速度快。有基本类型,基本类型不属于面向对象。java是一个面向对象开发语言。针对每个基本类型对应一个包装类型,包装类型面向对象结构。
基本类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
package cn.daniel.hello;
public class TestArea {
public static void main(String[] args) {
int i = 100;
Integer j = 100;
System.out.println(i);
System.out.println(j);
//数据上没有差异
System.out.println(j.toBinaryString(i));
}
}
包装类型额外有很多的方法。
例如:转换二进制方法,j.toBinaryString() java自身带给它的,包装类创建时自己就已经有了很多方法
类型之间的转换------用int和Integer举例
把int转换Integer,把基本类型int转换包装类型Integer 把Integer转换int,把包装类型Integer转换基本类型intpackage cn.daniel.hello;
public class TestArea {
public static void main(String[] args) {
//1)把int转换Integer,把基本类型int转换包装类型Integer
int a1 = 100;
Integer b1 = a1;
System.out.println(a1);
System.out.println(b1);
//数据上面没有变化
//a1是基本类型,b1是包装类型,这是两个东西,怎么能赋值?
//上面过程,java底层做了很多事情?
//编译后真正的语句:Integer b1 = new Integer(100); ,java中对象都必须new出来,创建对象
Integer c1 = new Integer(100);
System.out.println(c1);
//把上面java自动把基本类型转换成包装类型过程:称为装箱(转换)
//2)把Integer转换int,把包装类型Integer转换基本类型int
Integer s1 = new Integer(200); //声明包装类型
int s2 = s1;
System.out.println(s1);
System.out.println(s2);
//真正代码:
int s3 = s1.intValue(); //intValue这个方法获取s1对象的值,拿到200,把200赋值给s3
//把上面java自动把包装类型转换基本类型过程:称为拆箱(转换)
}
}
装箱:基本类型转换成包装类型的过程(小转大)
拆箱:包装类型转换成基本类型的过程(大转小)
代码演示案例
package cn.daniel.hello;
public class TestArea2 {
public static void main(String[] args) {
//装箱:把基本类型装入包装类型,小转大
long x1 = 9;
Long x2 = x1; //小转大,自动装箱 Long x2 = new Long(9);
System.out.println("装箱:把x1装入x2:"+x2);
//拆箱:把包装类型装入基本类型,大转小
Long y1 = new Long(900);
long y2 = y1; //大转小,自动拆箱 long y2 = y1.longValue();
System.out.println("拆箱:把y1拆出值y2:"+y2);
}
}
六、三值交换案例
package cn.daniel.hello;
//交换
public class Swap {
public static void main(String[] args) {
int a = 100;
int b = 200;
System.out.println("交换前:a="+a+"b="+b);
//需要中间变量,用来临时存储数据,否则就被覆盖
int t = a;
a = b;
b = t;
System.out.println("交换后:a="+a+"b="+b);
}
}
运行结果:
交换前:a=100,b=200
交换后:a=200,b=100
七、强制转换
java中数据类型的强制转换是通过强制转换语句完成的。
强制转换语句的格式为“目标数据类型 变量 = (目标数据类型) 数据;”
案例
package cn.daniel.hello;
import org.junit.Test;
public class Cover {
@Test //小转大
public void smallToBig() {
//字节类型转成整数类型
byte b = 100;
int i = b; //等号右边b,当前值100,把100赋值给i,b字节,i整数,两个类型不同
System.out.println("小转大(自动转换):"+i);
}
@Test //大转小
public void bigToSmall() {
int i = 100;
byte b = (byte)i; //因为有风险,我们写的代码,我知道能存放这个值,强制换行
//把i强制转换成byte字节类型
System.out.println("大转小(强制转换):"+b);
}
}
基本类型转换原则:
类型转换主要在在赋值、方法调用、算术运算三种情况下发生。
特殊:
如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。 当运算符为自动递增运算符(++)或自动递减运算符(–)时,如果操作数为byte,short或char类型不发生改变;