Java学习笔记 第二天

第一章 数据类型和变量

1.1 数据类型分类

  • 基本数据类型(今天的重点,4类8种
    整数型:byte short int long
    浮点型:float double
    字符型:char
    布尔型:boolean

  • 引用数据类型(以后的重点)
    字符串、数组、类、接口、Lambda

数据类型关键字内存占用取值范围
字节型byte1个字节-128~127
短整型short2个字节-32768~32767
整型int(默认)4个字节-231~231-1
长整型long8个字节-263~263-1
单精度浮点数float4个字节1.4013E-45~3.4028E+308
双精度浮点数double(默认)8个字节4.9E-324~1.7977E+308
字符型char2个字节0~65535
布尔类型boolean1个字节true,false

注意:
1.字符串不是基本类型,而是引用类型。
2.浮点型只是一个近似值,并非精确的值。
3.数据范围与字节数不一定相关,比如float要比long范围更广,但是float是4字节,而long是8字节。
4.浮点数当中默认类型是更加精确的8字节double,如果要使用float类型,需要加上后缀F(大小写都可,推荐大写)。
 如果是整数,默认类型是4字节int类型,如果要使用long类型,需要加上后缀L(大小写都可,推荐大写)
5.后面所学的null值,是的意思,而null是不能调用任何静态方法和属性的。

1.2 变量

定义:程序运行期间可以改变的量
创建一个变量: 数据类型 变量名称
给变量赋值: 变量名称 = 数据值
一步到位的格式: 数据类型 变量名称 = 数据值 。如 int num1 = 8
注意:
 1.对变量所赋数值不能超过变量类型的取值范围,这点对于byte和short类的整型需要尤其注意
 2.在使用long和float类型时候,不要忘记加后缀L和后缀F。如long num2 = 10000000000L
 3.在创建多个变量时,变量名称不能重复
 4.没有进行赋值的变量无法直接使用,必须赋值后才可使用
 5.变量使用不能超过其作用域
  作用域: 从定义变量的一行开始,一直到所属的大括号结束为止。
 6.可以通过一个语句来创建多个变量后续,再分别进行赋值,但是一般情况下不推荐这么写。如:

int a,b,c;
a=10;
b= 20;
c = 50;
System.out.println(a);
System.out.println(b);
System.out.println(c);

 也可直接创建多个带有初始值的同类型变量。如:

int x = 10;y = 20;z = 50
System.out.println(x);
System.out.println(y);
System.out.println(z);

1.3数据类型转换

当数据类型不一致时侯,将会发生数据类型的转换

1.3.1 自动类型转换(隐式)

 1.特点:代码不需要进行特殊处理,自动完成。
 2.规则:数据范围从小到大,这与该数据类型所占据的内存字节数是无关的
如:

//	左边定义类型为long类型,右边是默认的int类型
//	一个等号代表赋值,将右边的int常量,交给左侧的long变量进行存储
//	int ---> long,符合了数据范围从小到大的要求
// 这一行代码发生了自动类型转换
long num1 = 100

//	左边定义类型为float类型,右边是默认的double类型,不符合数据范围从小到大的要求,故下面这行代码错误
float num2 = 3.14

//	左边定义类型为float类型,右边是Long类型
//	float类型占4个字节,long类型占8个字节,但float类型的数据范围比long类型的数据范围大
//	long ---> float,符合了数据范围从小到大的要求
float num3 = 30L

1.3.2 强制类型转换(显式)

 1.特点:代码需要进行特殊处理,无法自动完成
 2.格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据;
如:

// 由于long类型的数据范围比int类型的数据范围大,故不符合自动类型转换中的规则,下面代码错误
int num = 100L
// 对上面代码修改为强制类型转换
int num = (int) 100L

1.3.3 数据类型转换的4个注意事项

1.强制类型转换一般不推荐使用,因为可能会发生数据精度损失、数据溢出

// long ---> int的强制转换
// 此时发生了数据溢出
int num2 = (int) 6000000000L;
System.out.println(num2);	//	1705032704

// double ---> int的强制转换
// 此时发生了精度缺失
int num1 = (int) 3.5;	//	3,这并不是四舍五入,所有的小数位都会被舍弃掉

2.byte/short/char这三种类型都可以发生数学运算,例如加法"+"

//	计算机的底层会用一个数字(二进制)来代表字符,如字符'A', 就是65
//	一旦char类型进行了数学运算,那么字符就会按一定的规则翻译为一个数字
char zifu = 'A';
System.out.println(zifu + 1);	//	66

3.byte/short/char这三种类型在进行运算的时候,都会被首先提升成为int类型,然后再计算
如:

byte num3 = 40;	//	注意!右侧的数值不能超过左边的数据类型范围
byte num4 = 50;
//下面一行代码错误,原因在于num3和num2两个byte类型在做数学运算时被提升为int类型,相加结果也是int类型,
//无法用byte类型定义变量接收int类型的结果,也不满足隐式类型数据转换的条件。
//	byte result = num3 + num4
//	代码修改为
int result  = num3 + num4


short num6 = 60;
//	byte + short ---> int + int ---> int
//	int强制转换为short
//	注意必须保证逻辑上真实大小本来没有超出short范围,否则会发生数据溢出或精度缺失
short result2 = (short)(num4 + num6);
System.out.println(result2)	//	100

4.boolean类型不能发生数据类型的转换,也不能看作0、1进行数学运算(这点与python不同)

1.3.4 ASCII码表

由于计算机内部实际上只有0和1,故需要有一种对应法则将字符与之对应

编码表:将人类的文字和一个十进制数进行对应组成了一张表格

  • ASCII码表:
    American Standard Code for Information Interchange美国信息交换标准代码
  • Unicode码表:
    万国码,也是数字和字符的对照关系,并且开头0-127部分和ASCII码表完全一样,但是从128开始包含有更多的字符

ASCII码表重点关注以下几个即可

字符数值
‘0’48
‘9’57
A65
Z90
a97
z122

注意:
ASCII码表中的字符’0’是字符型变量,是char类型,不是整型的数字0,计算机底层存储数字时候按照二进制存储,但是在存储字符型变量时候,是先找到字符对应的码表中的十进制数据,然后用二进制表示这个十进制数据

简单示范举例:

public class Demo02TypeChar{
	public static void main(String[] args);{
		char zifu1 = 'c';
		// 左边类型为int,右边是char类型,符合数据范围从小到大的自动类型数据转换的条件
		int num = zifu1;
		System.out.println(num);//	输出结果是97 + 2 = 99
	}
}

第二章 运算符

2.1 算术运算符

算术运算符:+、-、*、/、%、++、–

2.1.1 除法/:

被除数 / 除数 = 商…余数
对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果仍然是整数,只看商,不看余数

int x = 10;
int y = 3;
int result = x / y;
System.out.println(result);	//	结果为商,即3

2.1.2 取模%:

只有对于整数的除法来说,取模运算才有余数的意义

int x = 10;
int y = 3;
int result = x % y;
System.out.println(result);	//	余数,模,结果为1

注意事项:
 1.一旦运算当中有不同类型的数据,那么结果就是数据类型范围大的那种,但是注意byte、short、char在进行运算时一定是先化为int类型,然后再进行计算

int x = 10;
//	int + double ---> double + double ---> double
double y = x + 2.5
System.out.println(y);	//	结果为12.5

2.1.3 加号的3种用法:

 1.对于数值来说就是加法
 2.对于字符char来说,在计算之前char类型数据会按照ASCII码表或Unicode表转换成相应的int型数据,然后再进行数学计算
 3.对于字符串String(String并不满足全是小写字母,因此这不是关键字,也不是基本数据类型)来说,加号代表字符串的连接操作
注意:
 任何数据类型在和字符串进行连接的时候,结果都会变成字符串

public class Demo05Plus{
	public static void main(String[] args){
		//	字符串类型变量的基本使用
		//	数据类型 变量名称 = 数据值;
		String str1 = "Hello";
		System.out.println(str1);	//	Hello
		System.out.println(str1 + "World");	//	HelloWorld
		
		String str2 = "Java";
		// String + int ---> String
		System.out.println(str2 + 20);	//	Java20

		//	优先级问题
		//	String + int + int
		// String		  + int
		// String
		System.out.println(str2 + 20 + 30)	//	Java2030
		System.out.println(str2 + (20 + 30))	//	Java50
	}
}

2.1.4 自增自减运算符

自增运算符:++
自减运算符:–

  • 基本含义:让一个数字+1或者-1
  • 使用格式:写在变量名称前或者变量名称后均可,如 ++num,也可以num++
  • 使用方式:
     1.单独使用:不和其他任何操作混合,自己独立成为一个步骤。
     2.混合使用:和其它操作混合,例如与赋值混合,或者与打印操作混合,等。
  • 使用区别
     1.在单独使用的时候,前++和后++没有任何区别,也就是:++num;和num++;完全一样
     2.在混合使用的时候,有重大区别:
      如果是前++,那么变量立刻马上+1,然后拿着结果进行使用 先加后用
      如果是后++,那么先使用变量本来的数值,然后再让变量+1 先用后加
    注意事项:
      只有变量才可以用自增、自减运算符,常量不能发生改变,所以不能用。如:++30这样的写法是典型的错误

例子如下:

int num1 = 20
//	混合使用,先++,变量马上变为21,然后打印结果
System.out.println(++num1);	//	输出21


int num2 = 20
//	混合使用,后++,首先使用变量本来的30,然后再让变量+1得到31
System.out.println(num2++);	//	输出20

int num3 = 30;
//	混合使用,前--,变量立刻变为29,然后赋值给result3
int result3 = --num3
System.out.println(result3);	//	29
System.out.println(num3);	//	29

int num4 = 30;
//	混合使用,后--,先用原来的变量值赋值给result3,然后再让变量-1变成29
int result3 = --num3
System.out.println(result3);	//	30
System.out.println(num3);	//	29

int x = 10;
int y = 20;
//	11 + 20 = 31
int result3 = ++x + y--
System.out.println(x);	//	11
System.out.println(y);	//	19


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值