常量、变量、运算符

在这里插入图片描述

1.常量(掌握)

常量是在程序执行过程中值不发生改变的量
分类:
字面值常量
1.字符串常量:用双引号扩起来的内容,如:”HelloWorld”
2.整数常量:所有整数,如:12
3.小数常量:所有小数,如:3.14
4.字符常量:用单引号扩起来的内容,如:‘A’,‘0’
5.布尔常量:只有true和false
6.空常量:null
自定义常量(后面讲)

2.进制(掌握)

Java中常用的为二进制(逢二进一)、八进制(逢八进一)、十进制(逢十进一)、十六进制(逢十六进一)
1.二进制:以0b开头,由0、1组成
2.八进制:以0开头,由1~7组成
3.十进制:默认为十进制,由1~9组成
4.十六进制:以0x开头,有1~9、A~F组成(A代表10,B代表11……)

3.进制转换(了解)
任意进制转换为十进制

位权展开法
例:二进制的110
1* 2^2+1* 2^1+0* 2^0=6

十进制转换任意进制

除基取余,直到商为0,余数反转
基是目标进制,如转换为二进制,基就为2,余数反转就是将余数倒过来依次写
例:6转换为二进制
6/2=3……0
3/2=1……1
1/2=0……1
则6的二进制为110

任意进制间的转换

以十进制为桥梁,先将该进制转换为十进制,再转换为目标进制

4.原码、反码、补码(了解)

原码:二进制的定点表示法,最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小
反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位不变
补码:正数的补码与其原码相同;负数的补码在其反码的末位加1。
注:计算机在底层进行计算时,是通过补码进行计算,而呈现在我们面前的是原码。
解释:
1的原码是0000 0001,-1的原码是1000 0001
1的补码是0000 0001,-1的补码是1111 1111
0的原码是0000 0000,0的补码是0000 0000
1+(-1)=0,但是1和-1的原码相加不是0的原码
而1和-1的补码相加为1 0000 0000,1代表负,剩余部分为0
即计算机利用了补码和溢出原理,让减法变成加法,用补码进行计算时,符号位不会约束计算。

5.变量(掌握)

变量是在程序执行的过程中,在某个范围内值可以发生改变的量,变量其实是内存中的一块小区域
格式:数据类型 变量名=变量值 ; 例:int age=6:
注意:
1.作用域问题:变量定义在哪一级大括号中,哪个大括号就是该变量的作用域,相同的作用域不能出现两个同名变量。
2.初始值问题:没有初始化值不能直接使用。

6.数据类型(掌握)

变量是内存中的一小块区域,定义变量就相当于在内存中开辟了一块内存空间,而不同数据类型的变量,内存中会分配不同大小的内存空间。

分类

基本数据类型
1.整数型
byte:1个字节(8bit) 范围:-128~127
short:2个字节(16bit) 范围:-2^15 ~ 2^15-1
int:4个字节(32bit) 范围:-2^31 ~ 2^31-1
long:8个字节(64bit) 范围:-2^63 ~ 2^63-1
2.浮点型
float:4个字节(32bit) 范围:-3.403* 10^38 ~ 3.403* 10^38
double:8个字节(64bit) 范围:-1.798* 10^302 ~ 1.798* 10^308
3.字符型
char:2个字节(16bit)
注:char可以存储一个汉字,Java采用Unicode编码,一个汉字为两个字符。
4.布尔型
boolean :1个字节
整数默认为int类型,浮点数默认为double类型

7.数据类型转换(掌握)
隐式转换

规则:
1.boolean类型不能转换为其他类型
2.byte、short、char—int—long—float—double
byte、short、char的计算会自动提升为int,如果long参与运算,则提升为long,如果有float再参与运算,则提升为float,如果有double再参与运算,则提升为double
3.byte、short、char之间不转换,他们参与运算首先转换为int类型

强制转换

格式:目标数据类型 变量名=(目标数据类型)(被转换的数据);
注意:尽量不要使用强制类型转换,可能存在损失精度的问题
面试题:变量相加和常量相加的区别

//面试题
class Demo
{
	public static void main(String[] args)
	{
		byte b1=3;
		byte b2=4;
		byte b3=b1+b2;	//会报错,b1+b2的结果为自动提升为int型,byte型的变量b3不能存储
		byte b4=3+4;	//不会报错
		byte b5=3+4+b1	//会报错,因为有变量参与运算,数据类型自动提升为int型
	}
}

常量优化机制:当多个常量进行运算时,会先把运算结果计算出来,如果结果在该数据类型的范围内,就不会报错,反之,报错。

8.字符与字符串参与运算(掌握)

例:

System.out,println('a');		//输出字符a
System.out.println('a'+1);		//输出数字98
//在ASCII码表中,‘a’的值为97,‘a’和1进行加法运算,就是将‘a’的ASCII码值加1

‘0’的值为48 ‘A’的值为65 ‘a’的值为97

+ 作为连接符

例:

System.out.println("hello"+"a"+1);	//输出helloa1
System.out.println('a'+1+"hello");	//输出98hello

当+的两端,有任意一端是一个字符串时,他就起到连接符的作用,把两端的内容连接起来形成一个新的字符串

9.运算符(掌握)

运算符就是对常量和变量进行操作的符号

算术运算符

+,-,*,/,%,++,- -
%(取余)如:5%3=2(5/3的商是1余数是2)%返回的结果就是余数
%运算结果的符号取决于参与运算的左边的符号。
注意:整数相除只能得到整数,如果想要得到小数,要使用浮点数
++与- -

/*
++:自增,对原有数据进行+1
--:自减,对原有数据进行-1
*/
class Demo
{
	public static void main(String[] args)
	{
		int i=1;
		int j=1;
		i++;	//i自增1,i的值为2
		++j;	//j自增1,j的值为2
	}
}

单独使用时:放在操作数前面和后面结果是一样的
参与运算使用时:放在操作数的前面,先自增或自减,然后参与运算。放在操作数的后面,先参与运算,再自增或自减

class Demo
{
	public static void main(String[] args)
	{
		int i=1;
		int j=1;
		int z=i++;	//z的值为1,i的值为2
		int x=++j;	//x的值为2,j的值为2
	}
}
赋值运算符

=,+=,-=,*=,/=,%=
=是把=右边的数据赋值给左边
+=:把左边和右边先做加法,然后再赋值给左边,a+=1结果相当于a=a+1
注意:赋值运算符要求左边的数据必须是一个变量
面试题(赋值运算符)

//面试题
class Demo
{
	public static void main(String[] args)
	{
		short s=1;
		s=s+1;	//报错,s+1的结果为int型,不能存储进short型的s变量中
		short s=1;
		s+=1;		//不报错
		/*
		s+=1和s=s+1的区别:
		s+=1会将结果强制转换为short型,而s=s+1不会
		*/
	}
}
关系运算符

== ,!=,>,<,>=,<=,instanceof(后面讲)
要辨析 == 和=的区别


class Demo
{
	public static void main(String[] args)
	{
		int a=10;
		int b=20
		boolean b=a==b;		//b的结果为false
		boolean b1=a<=b;	//b1的结果为true
	}
}
逻辑运算符

&(与),|(或),!(非),^(异或),&&(短路与),||(短路或)
注意:逻辑运算符一般用于连接boolean类型的表达式或者值
在Java中表示一个变量大于3且小于6,表示方式为:x>3&x<6
&:有false则false
|:有true则true
^:相同为false,不同为true
!:非false则true,非true则false

&&与&的区别

&&为短路与,左边为false时,右边不执行,&两边都要执行,&&与&结果一样

class Demo
{
	public static void main(String[] args)
	{
		int a=10;
		int b=20;
		boolean b1=a>b&(b++)<25;
		System.out.println(b1);	//b1为false
		System.out.println(b);	//b的值为21
		boolean b2=a>b&&(b++)<25;	
		System.out.println(b2);	//b2为false
		System.out.println(b);	//b的值为21
		//&&的左边执行后为false,右边不执行,即b不会再次自增
		//||(短路或)同理
	}
}
位运算符

&(与),|(或),^(异或),~(按位取反)
<<(左移),>>(右移),>>>(无符号右移)
^的特点:一个数据被另一个数据位异或两次,该数本身不变

System.out.println(3^4^4);//输出结果为3
System.out.println(4^4^3);//输出结果为3
System.out.println(4^3^4);//输出结果为3

&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反 0变1 1变0
<<(左移):空位补0,被移除的高位抛弃
>>(右移):被移位的二进制最高位是0,右移后空位补零;最高位为1,高位补1。
>>>(无符号右移):被移位的二进制最高位无论是0还是1,空位都用0补

三元运算符

格式:(关系表达式)?表达式1:表达式2;
执行流程:计算关系表达式中的值,如果为true,运算后的结果为表达式a,如果为false,运算和的结果为表达式b

int a=10;
int b=20;
int max=(a>b)?a:b	//结果max=20
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值