Java-变量和运算符

变量

变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。
Java中没有无符号变量,所有的数据型变量均有符号,0代表正数,1代表负数。

1、整型变量

基本格式:

	int 变量名 = 初始值;

在java中,一个int变量占4个字节,其中,第一位为符号位,剩余的32位为数值位。所以有int型变量的取值范围是:-231 — 231-1。
使用以下代码进行查看:

System.out.println(Integer.MAX_VALUE);//2147483647
System.out.println(Integer.MIN_VALUE);//-2147483648

若运算的结果超出了int的最大范围,就会出现溢出的情况。

int maxValue = Integer.MAX_VALUE;
int minValue = Integer.MIN_VALUE;
System.out.println(maxValue+1);//-2147483648
System.out.println(minValue-1);//2147483647

在这里插入图片描述
Java中“+”的使用方法:

int a = 10;
int b = 20;
System.out.println(a+b);//30
System.out.println("a + b = " + a + b);//a + b = 1020

由上述代码可知,任何类型的数据和字符串进行拼接,结果都是字符串。

2、长整型变量

长整型变量是比整型变量范围更大的数据类型。
基本语法格式:

long 变量名 = 初始值;

代码示例:

long num = 12L;
long num1 = 12;

定义一个长整型变量,需在初始值后添加L,如num;否则编译器会将其默认为整形数据,如num1,此时会发生类型提升。
Java中,long类型占8个字节,即64位比特位,其中第一位为符号位,剩下的63位为数值位,其表示的数据范围是-263—263-1。
使用以下代码查看:

System.out.println(Long.MAX_VALUE);//9223372036854775807
System.out.println(Long.MIN_VALUE);//-9223372036854775808

3、双精度浮点型变量

基本语法格式:

double 变量名 = 初始值;

在java中,int除以int的值仍是int(会直接舍弃小数部分)。而若其中任意一个为double类型时,执行结果均为double类型。

int a = 1;
int b = 2;
System.out.println(a/b);//0
double a1 = 1.0;
int b1 = 2;
System.out.println(a1/b1);//0.5
double num = 1.1;
System.out.println(num * num);//1.2100000000000002
System.out.printf("%f",num2 * num2);//1.210000

Double型变量在java中占8个字节。

4、单精度浮点型变量

基本语法格式:

float 变量名 = 初始值;

代码示例:

float num = 1.0f;

定义一个单精度浮点型变量,需在初始值后添加f/F,如num;若不加f/F,即如12.8,java中默认其为double型变量。
Float型变量在java中占4个字节。

5、字符类型变量

基本语法格式:

char 变量名 = 初始值;

Java中,使用单引号+单个字母的形式表示字符字面值。
代码示例:

char ch = 'A';

也可以使用一个字符表示一个汉字:
代码示例:

char ch = '和';

在java中使用Unicode表示字符,因此一个字符占两个字节。

6、字节类型变量

基本语法格式:

byte 变量名 = 初始值;

字节类型表示的也是整数,只占一个字节,表示范围为-128—127。
使用以下代码查看:

System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);

在java中,小于四个字节的整数类型进行运算时,会先提升成整型。
代码示例1:

byte a = 10;
byte b = 20;
byte c = a+b;//此处报错“java: 不兼容的类型: 从int转换到byte可能会有损失”
//因为此处b+c被提升为整型,范围比byte类型大,所以不能将整型赋值与byte类型,所以此处报错

代码示例2:

byte num = Byte.MAX_VALUE+1;//此处报错“java: 不兼容的类型: 从int转换到byte可能会有损失”
//因为Byte.MAX_VALUE和1均为整型
System.out.println(Byte.MAX_VALUE+1);//此处运行成功,并打印128

7、短整型变量

基本语法格式:

short 变量名 = 初始值;

Short占用两个字节,数据范围是-32768—32767。
使用以下代码查看:

System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);

8、布尔类型变量

基本语法格式:

boolean 变量名 = 初始值;

Boolean类型的变量只有两种取值,true表示真,false表示假。
Java中boolean类型和int不能相互转换,不存在1表示true,0表示false的用法。
代码示例:

boolean value = true;
System.out.println(value+1);//此处报错
//java: 二元运算符 '+' 的操作数类型错误
//  第一个类型:  boolean
//  第二个类型: int

9、字符串类型变量

基本语法格式:

String 变量名 = 初始值;

Java只用双引号+若干字符的方式表示字符串字面值。
String不是基本类型,而是引用类型。
字符串中的一些特定的字符需要进行转义。
转义字符示例:

String str = "My name is \"张三\"";
//输出:My name is "张三"
转义字符解释
\n换行
\t水平制表符
\’单引号
\"双引号
\\反斜杠

字符串中的 + 操作,表示字符串拼接:

String a = "hello";
String b = " world";
String str = a+b;
System.out.println(str);//输出:hello world

常量

常量在运行时不能发生改变。主要有以下两种体现形式:

1、字面值常量

10		//int 十进制
014		//int 八进制,由数字0开头
0xb2	//int 十六进制,由0x开头
10L		//long 
1.0		//double 也可以写作1.0d,1.0D
1.5e2	//double 科学计数法,等同于1.5 * 10^2
true	//boolean
'a'		//char 单引号中只有一个字符
"asd"	//String 双引号中可以有多个字符

2、final关键字修饰的常量

final int A = 10;
A = 20;//此处编译出错

final修饰的常量名全大写,且只能被初始化一次,之后在运行过程中不能被修改。使用时一定要初始化!

运算符

1、算术运算符

基本四则运算符 +,-,*,/

1)int/int结果仍然是int(直接舍弃小数部分)

int a = 1;
int b = 2;
System.out.println(a/b);//结果为0

2)0不能作为除数

int a = 10;
int b = 0;
System.out.println(a/b);//此处报错(编译时可通过,运行时报错)
//Exception in thread "main" java.lang.ArithmeticException: / by zero
	//at test01.main(test01.java:22)

3)%表示取余

System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
System.out.println(11.5%2.0);//1.5

在这里插入图片描述

增量赋值运算符 +=,-=,*=,/=,%=

int a = 10;
a += 2;
System.out.println(a);//12
a -= 2;
System.out.println(a);//10
a *= 2;
System.out.println(a);//20
a /= 2;
System.out.println(a);//10
a %= 2;
System.out.println(a);//0

自增/自减运算符 ++,–

int a = 10;
int b = a++;
System.out.println(a);//11
System.out.println(b);//10 先赋值,再自增
int c = 11;
int d = ++c;
System.out.println(c);//12
System.out.println(d);//12 先自增,再赋值
---------------------------------------------------
int i = 10;
i = i++;
System.out.println(i);//10

2、关系运算符

关系运算符主要有:==,!=,<,>,<=,>=
**注意:**关系运算符的表达式返回值都是boolean类型,即true和false。

int a = 15;
int b = 20;
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a>=b);//false
System.out.println(a<=b);//true

3、逻辑运算符

逻辑运算符主要有:&&,||,!

逻辑与

两个操作数都为true,结果才为true,否则结果是false。

int a = 15;
int b = 20;
int c = 56;
System.out.println(a>b && b>c);//false
System.out.println(a<b && b<c);//true

遵循短路求值的规则:一旦表达式1为假,那么表达式2不会被执行。

逻辑或

两个操作数都是false,结果才为false,否则结果是true。

int a = 15;
int b = 20;
int c = 56;
System.out.println(a>b || b>c);//false
System.out.println(a>b || b<c);//true

遵循短路求值的规则:一旦表达式1为真,那么表达式2不会被执行。

逻辑非

只作用于布尔类型。
操作数为true,结果为false;操作数为false,结果为true。

int a = 15;
int b = 20;
int c = 56;
System.out.println(!(a<b));//false
System.out.println(!a<b);//此处报错“java: 一元运算符 '!' 的操作数类型int错误”
//此处!作用于a,a不是boolean类型

&和|

当操作数为boolean的时候,也表示逻辑运算,但是不支持短路求值,即两个表达式都会被执行到,任何一个表达式有错程序都会报错。

4、位运算符

Java中对数据操作的最小单位是二进制位,而不是字节。
位运算符主要有:&,|,~,^

按位与 &

若两个二进制位都是1,则结果为1,否则结果为0。

int a = 10;
int b = 20;
System.out.println(a&b);//0

在这里插入图片描述

按位或 |

如果两个二进制位都是0,则结果为0,否则结果为1。

int a = 10;
int b = 20;
System.out.println(a|b);//30

在这里插入图片描述

按位取反 ~

如果该位为0,则结果为1,如果该位为1,则结果为0。

int a = 10;
int b = 20;
System.out.println(~a);//-11

负数在计算机中的存储方式
负数在内存中以补码的方式存储。
计算方法:原码—反码(符号位不变,数值位分别“按位取反”)—补码(反码的末位加1)
例如:十进制-11
在这里插入图片描述

按位异或 ^

如果两个数字的二进制位相同,则结果为0,否则结果为1。

int a = 10;
int b = 20;
System.out.println(a^b);//30

在这里插入图片描述

5、条件运算符

条件运算符只有一个:表达式1?表达式2:表达式3
代码示例:

int a = 10;
int b = 20;
int c = a>b?a:b;
System.out.println(c);//20

6、移位运算

移位运算符有:<<,>>,>>>

左移 <<

移除对应二进制的最左侧位,并在最右侧补0。

int a = 10;
System.out.println(a << 1);//20
int c = -11;
System.out.println(c<<1);//-22

由上述结果可知,正数/负数每左移一次,相当于原数值扩大二倍,即左移乘二。

右移 >>

移除对应的二进制的最右侧位,并在最左侧补符号位(整数补0,负数补1)。

int b = 20;
System.out.println(b >> 1);//10
int d = -11;
System.out.println(d>>1);//-6

正数每右移一次,相当于原数值除以二,即右移除二。

无符号右移 >>>

最右侧位不要了,在最左侧补0。
**注:**没有无符号右移。

int a = 10;
int c = -11;
System.out.println(a>>>1);//5
System.out.println(c>>>1);//2147483642
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值