Java数据类型和运算符

一、变量和类型

变量指的是程序运行时可变的量,类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。

JAVA中存在8种基本数据类型:

数据类型大小(字节)包装类范围
byte1字节Byte-128 - +127
short2字节Short-2^15 - 2^15-1
int4字节Integer-2^31 - 2^31-1
long8字节Long-2^63 - 2^63-1
float4字节Float*
double8字节Double*
char2字节Character*
boolean无明确规定Booleantrue/false

1、字节类型变量(byte)

字节类型变量的范围如图:

System.out.println(Byte.MAX_VALUE+1);  //-128
System.out.println(Byte.MIN_VALUE-1);  //127

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZtDf5r89-1602321743747)(C:\Users\lenovo\Desktop\int.png)]

2、整型变量(Int)

用代码查看Java中整型数据范围

System.out.println(Integer.MAX_VALUE); //int的最大值
System.out.println(Integer.MIN_VALUE); //int的最小值

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

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

3、长整型变量(long)

长整型的定义:

long num = 10L; //定义一个长整型变量
System.out.println(num);

注意事项:

初始化设定的值为10L,表示一个长整型的数字.10l也可以. 但是为了明显区分1l使用L更好

同样可以使用如下代码查看Java中的长整型数据范围:

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

4、单精度浮点型(float)

示例:

float num = 1.0f; //写作1.0F也可以
System.out.println(num);

5、双精度浮点型(double)

double num = 1.1;
System.out.println(num*num);
//1.2100000000000002

Java中的double虽然也是8字节,但是浮点数的内部布局和整数差别很大,不能单纯的用2^n的形式表示范围。

6、字符类型(char)

char ch = 'A';
char chinese = '哈';
System.out.println(ch); //A
System.out.println(chinese); //哈

注意事项

计算机中的字符本质上是一个整数,在c语言中使用ASCII表示字符,而Java使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文。

7、布尔类型变量(boolean)

boolean value = true;
System.out.println(value);

boolean类型的变量只有两种取值,即true表示真,false表示假。Java的boolean类型和int不能互相转换,不存在1表示true,0表示false的用法。另外boolean类型有些在JVM中实现是占一个字节,有些是占一个比特位,并没有明确规定。

字符串类型变量(String)

String name = "zhangsan";
System.out.println(name);

Java使用双引号+若干字符的方式表示字符串字面值。String不是基本类型,而是引用类型

常见转义字符:

转义字符解释
\n换行
\t水平制表符
单引号
"双引号
\反斜杠

字符串可以使用+操作,表示字符串拼接

String a = "hello ";
String b = "world";
String c = a+b;
System.outprintln(c); //hello world
//字符串和整数拼接
int i = 10;
int j = 20;
String res=a+i+j;
System.out.println(res); //hello 1020

数据类型转换

int a = 10;
long b = 20;
a=b; //编译出错
b=a; //编译通过

double c = 1.0;
a=c; //编译出错,可能会损失精度
c=a; //编译通过

long 表示的范围更大, 可以将 int 赋值给 long, 但是不能将 long 赋值给 int.
double 表示的范围更大, 可以将 int 赋值给 double, 但是不能将 double 赋值给 int.

结论:不同数字类型的变量之间赋值,范围小的类型能够隐式转换成范围较大的类型,反之不行。

强制类型转换

int a = 0;
double b = 10.5;
a = (int)b; //10

int c = 10;
boolean bool = false;
b = (boolean)c;  //编译出错,不兼容的类型

结论:强制类型转换可以将double类型转换成int类型,但是会导致精度丢失;互不兼容的类型之间无法强制转换。

数值提升

数字类型变量之间的混合运算:

int a = 10;
long b = 20;
int c = a + b;  //编译出错,long转成int会丢失精度
long d = a + b;  //编译通过

//int表示范围更小,而long表示范围更大,在混合计算时会将int提升为long

int和String之间的转换

int转成String

int sum = 10;
//方法1
String str1 = num +"";
//方法2
String str2 = String.valueOf(num);

String转成int

String str = "100";
int num = String.valueOf(str);
//int num = Integer.parseInt(str);

Oracle官网文档查看String转换方法

二、运算符

1、算数运算符

  • 基本四则运算符+ - * / %

除法规则:

int a = 1;
int b = 2;
System.out.println(a/b); 
//结果为0,int类型除法的结果还是为int
//除法的除数不能为0,否则会报错java.lang.ArithmeticException

%表示取余:

System.out.println(10%3); //1
System.out.println(11.5%2.0); //1.5
  • 增量赋值运算符+= -= *= /= %=
int a = 10;
a += 1;  //a=a+1;
System.out.println(a); //11
  • 自增/自减运算符++ --
int a = 10;
int b = ++a;
System.out.println(b); //11
int c = a++;
System.out.println(c); //10

2、关系运算符

六个关系运算符:

== != > < >= <=

int a = 10;
int b = 22;
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、逻辑运算符

三个逻辑运算符:

&& || !

逻辑与&&:

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c); //true

逻辑或||:

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

逻辑非!:

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

短路求值

&&和||遵守短路求值的规则.

System.out.println(10 > 20 && 10 /0 == 0);  //false
System.out.println(10 > 20 || 10 /0 == 0);  //true

结论:

  1. 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.

  2. 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.

位运算符

四个位运算符:

& | ^ ~

**按位与&:**如果两个二进制位都是,则结果为1,否则为0.

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

**按位或|:**如果两个二进制位都是0,则结果为0,否则为1.

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

注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.

**按位取反~:**如果该位为0则转为1,如果该位为1则转为0

**按位异或^:**如果两个数字的二进制位数相同,则结果为0,相异则为1

条件运算符

表达式1 ? 表达式2:表达式3

表达式1的值为true时,整个表达式的值为表达式2的值;当表达式1的值为false时,整个表达式的值为表达式3的值.

//求两个数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b; //b

注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.

**按位取反~:**如果该位为0则转为1,如果该位为1则转为0

**按位异或^:**如果两个数字的二进制位数相同,则结果为0,相异则为1

条件运算符

表达式1 ? 表达式2:表达式3

表达式1的值为true时,整个表达式的值为表达式2的值;当表达式1的值为false时,整个表达式的值为表达式3的值.

//求两个数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b; //b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值