第二天
1.整理eclipse的常用快捷键
ctrl+ d 删除光标所在的行,删除所选择的内容
ctrl+ f 打开查找和替换的窗口
ctrl+ h 打开复杂查找窗口
ctrl+ w 关闭当前文档
ctrl+ shift+ w 关闭所有已经打开的文档窗口
ctrl+ shift+ o 导入类所需要包和类
ctrl+ shift+ f 格式化源代码
alt+ shift+ z 给选择代码添加模板
f2 选择后按f2是更名
2.java的基础语法
不是java语言跨平台,而是java虚拟机跨平台. 公有类的名字必须跟文件名一致,一个java文件中可以写多个类,但是公有类只有一个,每个类中都可以写main方法,但是只能有一个. 假如一个java文件中写了两个类,编译完成后是两个class文件.
3.bit,byte,MB,GB的关系
bit是计算机中最小的存储单位,byte是计算机中最基本的数据单元 1个byte(字节)是由8个比特组成
1 k byte = 1024 byte
1 m byte = 1024 k byte
1 g byte = 1024 m byte
1 t byte = 1024 g byte
1 peta byte = 1024 t byte
1 exa byte = 1024 p byte
1 zeta byte = 1024 e byte
1 yotta byte = 1024 z byte
4.整数类型 byte,short,int,long
类型 占用存储空间 表示范围 byte 1字节=8bit位 -128 ~ 127 short 2字节 -2^15~ 2^15-1 int 4字节 -2^31~ 2^31-1 (约21亿) long 8字节 -2^63~ 2^63-1
第一个位表示正负,表示范围的时候还要在正数的那边减一,因为0不能算
class VariableTest1 {
public static void main ( String [ ] args) {
byte b1 = 12 ;
byte b2 = - 128 ;
System . out. println ( b1) ;
System . out. println ( b2) ;
short s1 = 128 ;
int i1 = 12345 ;
long l1 = 345678586 ;
System . out. println ( l1) ;
}
}
5.浮点型:float,double
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。 double:双精度,精度是float的两倍(当然占用的空间也是float的两倍) java的浮点类型默认为double型,声明float型常量必须在后面加上’f’或’F’
类型 存储空间 表数范围 double 4字节 -3.403E38 ~ 3.403E38 float 8字节 -1.798E308 ~ 1.798E308
6.字符类型: char
char 型数据通常意义上’字符’(2字节) java中所有的字符都是使用Unicode编码存储的,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符. char类型是可以进行运算的,因为他都对应有Unicode码
class VariableTest1 {
public static void main ( String [ ] args) {
double d1 = 12.3 ;
System . out. println ( d1 + 1 ) ;
float f1 = 12.3F ;
System . out. println ( f1) ;
char c1 = 'a' ;
System . out. println ( c1) ;
char c2 = '1' ;
char c3 = '中' ;
char c4 = '&' ;
System . out. println ( c2) ;
System . out. println ( c3) ;
System . out. println ( c4) ;
char c5 = '\n' ;
c5 = '\t' ;
System . out. print ( "hello" + c5) ;
System . out. println ( "world" ) ;
char c6 = '\u0123' ;
System . out. println ( c6) ;
char c7 = '\u0043' ;
System . out. println ( c7) ;
}
}
了解: ASCII码
在计算机内部,所有的数据都是使用二进制表示,每一个二进制位(bit),有0和1两种状态,因此8个二进制位就可以组合出256种状态,这被称为一个字节(byte).一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到1111111. ASCII码:上个世纪60年代,美国制定了一台字符编码,对英语字符与二进制位之间的关系做了统一规定,这被称为ASCII码,ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 缺点
不能表示所有字符。 相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel(ג)。
7.字符编码
*了解:Unicode编码
乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号.因此.想要打开一个文本文件,就必须知道他的编码方式,否则使用错误的编码方式解读就会乱码. Unicode:一种编码,将世界上所有的符号都纳入其中.每一个符号都给予独一无二的编码,使用Unicode不会有乱码问题. Unicode的缺点:
Unicode只规定了符号的二进制代码,却没有规定这个二进制代码该如何存储,无法区别Unicode和ASCII:计算机 无法区分三个字节表示一个符号还是分别表示三个符号,另外我们知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么必然有二到三个字节是0,这对于存储空间来说是极大的浪费.
了解: UTF- 8
UTF-8是在互联网上使用最广泛的一种Unicode的实现方式. UTF-8 是一种变长的编码方式.它可以使用1-6个字节表示一个字符,根据不同的符号二变化字节长度 UTF-8的编码规则:
对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码) 对于多字节的UTF-8编码,如果编码包含n 个字节,那么第一个字节的前n位为1,第一个字节的第n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
8.布尔类型:boolean
Boolean类型数据只允许取值true和false,无null.
不可以使用0或非0的整数代替false和true,这点和c语言不同.
9.基本数据类型转换
有很多类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后在进行计算. byte,short,char之间不会相互转换,他们三者计算时会首先转换为int类型 boolean类型不能参与其他类型的运算 当把任何基本类型数据的值和字符串(string)进行连接运算时(+),基本数据类型的值将自定转换为字符串(String)类型
class VariableTest2 {
public static void main ( String [ ] args) {
byte b1 = 2 ;
int i1 = 129 ;
int i2 = b1 + i1;
long l1 = b1 + i1;
System . out. println ( i2) ;
System . out. println ( l1) ;
float f = b1 + i1;
System . out. println ( f) ;
char c1 = 'a' ;
int i3 = 10 ;
int i4 = c1 + i3;
System . out. println ( i4) ;
short s2 = 10 ;
byte b2 = 10 ;
}
}
class VariableTest4 {
public static void main ( String [ ] args) {
long l = 123456 ;
System . out. println ( l) ;
long l1 = 452367894586235L ;
byte b = 12 ;
}
}
10.字符串类型:String
String不是基本数据类型 使用方式与基本类型一致.列如:String str=“abcd”; 一个字符串乐意串接另一个字符串,也可以直接串接其他的类型.
class StringTest {
public static void main ( String [ ] args) {
String s1 = "Good Moon!" ;
System . out. println ( s1) ;
String s2 = "a" ;
String s3 = "" ;
int number = 1001 ;
String numberStr = "学号:" ;
String info = numberStr + number;
boolean b1 = true ;
String info1 = info + true ;
System . out. println ( info1) ;
}
}
#练习
String str1 = 4 ;
String str2 = 3.5f + “”;
System . out. println ( str2) ;
System . out. println ( 3 + 4 + “Hello ! ”) ;
System . out. println ( “Hello ! ”+ 3 + 4 ) ;
System . out. println ( ‘a’+ 1 + “Hello ! ”) ;
System . out. println ( “Hello ”+ ‘a’+ 1 ) ;
11.类型转换
类型转换分为强制类型转换和自动类型提升 强制类型转换是自动类型转换的逆过程,将容量大的数据类型转换为容量较小的数据类型.使用时要加上强制转换符:()但可能造成精度降低或溢出要格外注意. 通常情况下字符串不能直接转黄成基本类型,但是通过基本类型对应的包装类则可以实现把字符串转换成基本类型. 如:String a = “43”; inti= Integer.parseInt(a);
boolean
类型不可以转换为其它的数据类型。
#练习
判断是否可以通过编译
short s = 5 ;
s = s- 2 ;
byte b = 3 ;
b = b + 4 ;
b = ( byte ) ( b+ 4 ) ;
char c = ‘a’;
int i = 5 ;
float d = .314F ;
double result = c+ i+ d;
byte b = 5 ;
short s = 3 ;
short t = s + b;