java条件运算符类型转换_java基础---3. 数据类型转换、运算符

1. 数据类型的转换

当数据类型不一样时,将会发生数据类型转换

自动类型转换(隐式)

强制类型转换(显示)

1.1 自动类型转换(隐式)

特点:代码不需要进行特殊处理,自动完成

规则:数据范围从小到大(与字节数未必相关)

bade26123c0d70a7ead982653b893ede.png

public class Demo01DataType {

public static void main(String[] args) {

System.out.println(1024);//这就是一个整数,默认就是int类型

System.out.println(3.14);//这就是一个浮点数,默认就是double类型

//1.整数和整数

//左边是long,右边默认int

//int--->long,符合数据范围从小到大,所以int可以自动转换成long

long num1=100;

System.out.println(num1);//100

//2.浮点数和浮点数

//左边是double,右边默认float

//float--->double,符合数据范围从小到大,所以float可以自动转换成double

double num2=2.5F;

System.out.println(num2);

//3.整数和浮点数

//左边是float,右边是long

//long--->float,符合范围从小到大

float num3=30L;

System.out.println(num3);//30.0

}

}

1.2 强制类型转换(显示)

特点:代码需要进行特殊的格式处理,不可以自动完成

public class Demo02DataType{

public static void main(String[] args){

//左边是int,右边是long

//long--->int,不符合数据范围从小到大,不会自动转换

//强制转换如下:

int num=(int)100L;

System.out.println(num);//100

//这种情况不加强制转化就会报错

}

}

注意事项:

强制类型转换一般不推荐使用,有可能会发生数据溢出或者精度损失

//将Long强制转换成int

int num2=(int)6000000000L;//若不加(int)会报错

System.out.println(num2);//1705032704 数据溢出

//double--->int,强制类型转换

int num3=(int) 3.9;

System.out.println(num3);//3 精度损失

byte、short、char这三种类型都可以发生数学运算,例如加法“+”

char ch='A';//这是一个字符型变量,里面是大写字母A

System.out.println(ch+1);//66

byte、short、char这三种类型在运算的时候,都会被首先提升为int类型,然后再计算

byte num4=40;

byte num5=50;

//byte result1=num4+num5;//报错 从int转换到byte可能会有损失

//报错原因:在运算的时候,byte会被提升为int(即num4转换为int,num5转换为int),所以result1应该用int接收

int result1=num4+num5;

System.out.println(result1);//90

short num6=60;//如果result2不用int接收,非要用short接收,在num4和num5进行强制类型转换的时候必须保证num4+num5逻辑上真实大小本来就没有超出short范围,否则会发生数据溢出

short result2=(short)(num6+num5);

System.out.println(result2);//110

注意:java中的boolean不可以发生数据类型转换

数字和字符的对照关系(编码表):

ASCII码表:American Standard Code for Information Interchange,美国信息交换标准代码。

Unicode:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。

48----> '0'

65----> 'A'

97----> 'a'

public class Demo03DataTypeChar {

public static void main(String[] args){

//1.输出ASCII值

//加了一个int类型的0,有加法运算就会将char类型提升为int类型,所以这里会输出字符'1'的ASCII值

char ch='1';

System.out.println(ch+0);//49

//2.输出ASCII值

char ch1='c';

int num=ch1;//自动类型转换

System.out.println(num);//99

//3.unicode编码

char ch2='中';

System.out.println(ch2+0);//20013 已经超出了ASCII的范围了

}

}

2 算术运算符

2.1 算数运算符_四则运算

四则运算:加减乘除:+ - * /

public class Demo04Operator {

public static void main(String[] args){

int x=10;

int y=3;

//对于一个整数表达式,int除以int得到的还是一个int

int result1=x/y;

System.out.println(result1);//3

}

}

取模:% 只有对于整数的除法,取模运算符才有意义

注意事项:一旦运算当中有不同类型的数据,那么结果将会是数据范围大的那种,但同时不要忘了byte、short、char在运算的时候都会自动提升为int类型再进行计算。

int z=6;

//int+double-->double+double-->double

double result2=z+2.5;

System.out.println(result2);//8.5

//但同时不要忘了byte、short、char在运算的时候都会自动提升为int类型再进行计算

2.2 算数运算符_四则运算当中加号"+"有常见的三种用法

1.对于数值来说,那就是加法

2.对于字符char类型来说,在计算之前,char会被提升为int,然后再计算。char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode

3.对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。任何数据类型和字符串进行连接的时候,都会变成字符串。

public class Demo05Plus {

public static void main(String[] args) {

//字符串类型变量的基本使用

String str1="Hello";

System.out.println(str1);//Hello

System.out.println("Hello"+"Word");//HelloWord

System.out.println(str1+20);//Hello20

//优先级问题

System.out.println(str1+20+30);//Hello2030

System.out.println(str1+(20+30));//Hello50

}

}

2.3 算数运算符_自增自减运算符

自增运算符:++

自减运算符:--

使用方法:

单独使用:前++和后++没有区别

混合使用:若为前++,那么变量立马加1,之后拿着结果进行使用;若是后++,那么首先使用变量本来的值,然后再让变量加1。

只有变量可以使用自增自减运算符,常量不可以使用

public class Demo06Operator {

public static void main(String[] args) {

int num1=10;

System.out.println(num1);//10

//单独使用

System.out.println(++num1);//11

System.out.println(num1++);//12

//与打印操作混合使用

int num2=20;

System.out.println(++num2);//21先加后用

System.out.println(num2);//21

int num3=30;

System.out.println(num3++);//30先用后加

System.out.println(num3);//31

//与赋值操作混合

int num4=40;

int result1= --num4;

System.out.println(result1);//39

System.out.println(num4);//39

int num5=50;

int result2=num5--;

System.out.println(result2);//50

System.out.println(num5);//49

//举例

int x=10;

int y=20;

int result3= ++x + y--;

System.out.println(result3);//31

System.out.println(x);//11

System.out.println(y);//19

}

}

3 赋值运算符

赋值运算符:=

复合赋值运算符:+= -= *= /= %=

只有变量可以使用赋值运算符,常量不可以使用

复合赋值运算符隐含了一个强制类型转换

public class Demo07Operator {

public static void main(String[] args) {

byte num = 30;

num += 5;

// num=num+5

// num=byte+int

// num=int+int

// num=int

// num=(byte)int 强制类型转换

System.out.println(num);//35 是一个byte类型的变量

}

}

4 比较运算符

== < > >= <= !=

比较运算符的结构是一个bool值,不成立就是false ,成立就是true

比较运算符不可以连写

5 逻辑运算符

与&& 或|| 非!

其中“与&&” 和 “或||”具有短路效果

“与&&” 和 “或||” 左右都必须是bool值

与&&” 和 “或||”运算符,如果有多个条件可以连续写:条件A && 条件A && 条件A

6 三元运算符

public class Demo08Operator {

public static void main(String[] args) {

int a = 10;

int b = 20;

//格式

//数据类型 变量名称 = 条件判断 ? 表达式A :表达式B

int max = a > b ? a : b;

System.out.println("最大值" + max);//20

//注意

//1. 必须保证表达式A的值和表达式B的值都符合左侧数据类型的要求

//int result = 3 > 4 ? 2.5 : 10;//报错 写法错误

//2. 三元运算符的结果必须被使用

//a > b ? a : b;//报错: 不是语句

System.out.println(a > b ? a : b);//20

}

}

变量赋值时的注意事项总结:

(1)赋值号右边:观察常量值大小是否在对应的数据类型范围(默认情况下是int/double)内,如果超过范围则直接报错。

//long num6=3000000000;//会报错,没有加L默认是int(30亿超过了int的范围)

long num6=3000000000L;

赋值号左边:观察被赋值的变量类型是否可以成功接收右边的常量

何为成功接收:

(2)自动类型转换(隐式):数据范围从小到大(与字节数未必相关)

(3)强制类型转换(显示):不符合数据范围从小到大,一般不推荐使用,有可能会发生数据溢出或者精度损失

byte、short、char这三种类型在运算的时候,都会被首先提升为int类型,然后再计算

(4)对于byte/short/char三种类型来,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个强制类型转换(byte)(short)(char),如果右侧超过了左侧的范围,那么直接编译器报错

So:整形常量默认为int类型,在不做强制类型转换的情况下,在不超出左边变量范围的情况下,它可以赋值给除了boolean类型之外的任何数据类型,而不会报错

byte num = 30;

short num1 = 30;

long num2 = 30;

float num3 = 30;

double num4 = 30;

char num5 = 30;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值