2021-07-13

第二天

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个比特组成
1k byte=1024 byte
1m byte=1024k byte
1g byte=1024m byte
1t byte=1024g byte

1peta byte=1024t byte
1exa byte=1024p byte
1zeta byte=1024e byte
1yotta byte=1024z byte

4.整数类型 byte,short,int,long

类型占用存储空间表示范围
byte1字节=8bit位-128 ~ 127
short2字节-2^15~ 2^15-1
int4字节-2^31~ 2^31-1 (约21亿)
long8字节-2^63~ 2^63-1
  • 第一个位表示正负,表示范围的时候还要在正数的那边减一,因为0不能算
/*
Java定义的数据类型

一、变量按照数据类型来分:
	基本数据类型:
		整型:byte \ short \ int \ long
		浮点型:float \ double
		字符型:char
		布尔型:boolean

	引用数据类型:
		类:class
		接口:interface
		数组:array

二、变量在类中声明的位置:
	成员变量会有一个默认值,例如:int类型的默认值是0
	而局部变量就不会有默认值,当我们直接使用没赋值的基本数据类型数据就会报错
	
		成员变量 vs 局部变量
*/
class VariableTest1{
	public static void main(String[] args) {
		//1. 整型:byte(1字节=8bit) short(2字节) \ int (4字节)\ long(8字节)
		//① byte范围:-128 ~ 127

		byte b1 = 12;
		byte b2 = -128;
	//	b2 = 128; //编译不通过
		System.out.println(b1);
		System.out.println(b2);

        // double 的最后的d可以省略但是long和float不可以省
		// ② 声明long型变量,必须以“1”或“L”结尾
		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’
类型存储空间表数范围
double4字节-3.403E38 ~ 3.403E38
float8字节-1.798E308 ~ 1.798E308

6.字符类型: char

  • char 型数据通常意义上’字符’(2字节)
  • java中所有的字符都是使用Unicode编码存储的,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符.
  • char类型是可以进行运算的,因为他都对应有Unicode码
/*
Java定义的数据类型

一、变量按照数据类型来分:

	基本数据类型:
		整型:byte \ short \ int \ long
		浮点型:float \ double
		字符型:char
		布尔型:boolean

	引用数据类型:
		类:class
		接口:interface
		数组:array

二、变量在类中声明的位置:
		成员变量 vs 局部变量
*/

class VariableTest1{
	public static void main(String[] args) {
		//2. 浮点型:float(4字节) \ double(8字节)
		//① 浮点型,表示带小数点的数值
		//② float表示数值的范围比long还大

		double d1 = 12.3;
		System.out.println(d1 +1);
		
		//定义float类型变量时,变量要以"f" 或"F"结尾
		float f1 = 12.3F;
		System.out.println(f1);

		//② 通常,定义浮点型变量时,使用double变量

		//3. 字符型:char(1字符=2字节)
		//① 定义char型变量,通常使用一对'' 
		char c1 = 'a';
		//编译不通过 单引号中只能有一个字符
		//c1 = 'AB';
		System.out.println(c1);

		char c2 = '1';
		char c3 = '中';
		char c4 = '&';
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);

		//② 表示方式:1.声明一个字符;2.转义字符;3.直接使用Unicode值来表示字符型常量
		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); // 输出 C
	}
}


了解: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)类型
/*
基本数据类型之间的运算规则:

前提:这里讨论只是7中基本数据类型变量的运算。不包含boolean类型的。
1. 自动类型提升:
	当容量小的数据类型的变量和容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
	char、byte、short-->int-->long-->float-->double

	特别的:当byte、char、short三种类型的变量做运算时,结果为int类型

2. 强制类型转换:
	
说明:此时容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
*/
class VariableTest2{
	public static void main(String[] args) {
		byte b1 = 2;
		int i1 = 129;
		//编译不通过   
//		byte b2 = b1 + i1;
		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';	//97
		int i3 = 10;
		int i4 = c1 + i3;
		System.out.println(i4);

		short s2 = 10;
		//编译错误 应用int类型接收
//		char c3 = c1 + s2;
		
		byte b2 = 10;
//		char c3 = c1 + b2;	//编译不通过 应用int接收

//		short s3 = b2 + s2;	//编译不通过 应用int接收
		
//		short s4 = b1 + b2;	//编译不通过 应用int接收
	}
}
class VariableTest4{
	public static void main(String[] args){
		//1. 编码情况
		long l = 123456;
		System.out.println(l);
		//编译失败:过大的整数
		//long l1 = 452367894586235;
		long l1 = 452367894586235L;

		//**************************
		//编译失败
//		float f1 = 12.3;
		
		//2. 编码情况2:
        
		//整型变量,默认类型为int型
		//浮点型变量,默认类型为double型
        
		byte b = 12;
	//	byte b1 = b + 1;	//编译失败
		
	//	float f1 = b + 12.3;	//编译失败
	}
}

10.字符串类型:String

  • String不是基本数据类型
  • 使用方式与基本类型一致.列如:String str=“abcd”;
  • 一个字符串乐意串接另一个字符串,也可以直接串接其他的类型.
/*
String类型变量的使用
1. String属于引用数据类型
2. 声明String类型变量时,使用一对""
3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算;+
4. 运算的结果任然是String类型

*/
class StringTest{
	public static void main(String[] args){

		String s1 = "Good Moon!";

		System.out.println(s1);

		String s2 = "a";
		String s3 = "";

//		char c = '';	//编译不通过
		
		//*******************************
		int number = 1001;
		String numberStr = "学号:";
		String info = numberStr + number;	//连接运算
		boolean b1 = true;
		String info1 = info + true;
		System.out.println(info1);
	}
}

#练习

String str1 = 4; //判断对错:no
String str2 = 3.5f + “”; //判断str2对错:yes
System.out.println(str2); //输出:”3.5”
System.out.println(3+4+Hello!); //输出:7Hello!
System.out.println(Hello!+3+4); //输出:Hello!34
System.out.println(‘a’+1+Hello!); //输出:98Hello!
System.out.println(Hello+‘a’+1); //输出:Helloa1

11.类型转换

  • 类型转换分为强制类型转换和自动类型提升
  • 强制类型转换是自动类型转换的逆过程,将容量大的数据类型转换为容量较小的数据类型.使用时要加上强制转换符:()但可能造成精度降低或溢出要格外注意.
  • 通常情况下字符串不能直接转黄成基本类型,但是通过基本类型对应的包装类则可以实现把字符串转换成基本类型.
  • 如:String a = “43”; inti= Integer.parseInt(a);
  • boolean类型不可以转换为其它的数据类型。

#练习

判断是否可以通过编译

short s = 5;
s = s-2; //判断:no  因为short和int进行运算会自动变成int  不可以直接用short接收,应当强制转换一下
byte b = 3;
b = b + 4;//判断:no
b = (byte)(b+4);//判断:yes
char c = ‘a’;
int i = 5;
float d = .314F;
double result = c+i+d; //判断:yes
byte b = 5;
short s = 3;
short t = s + b;//判断:no
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值