Java语法(类型转换、运算符)

本文详细介绍了C语言中的自动类型转换、表达式中的类型转换、强制类型转换,以及运算符如自增自减、逻辑运算符和短路逻辑的使用和注意事项。通过实例演示了这些概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

前言

由于部分知识在C语言学过,这里只选了自己不是很熟的进行学习。
这里选的几张CSDN图片均为自己账号的图片0.0

类型转换

自动类型转换

是什么:类型范围小的变量,可直接赋值给类型范围大的变量

package Type; 
public class typedemo {     
	public static void main(String[] args) {         
	//自动转换类型         
	byte a = 6;         
	int b = a;//此处发生了自动类型准换        
	System.out.println(a);         
	System.out.println(b);    
	} 
}

从底层原理来看:a占8位,为0000110,而b中有32位,完全可以放下a中的8位
自动类型转换的其他形式:
image.png

表达式的自动类型转换

在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再计算
eg byte、short、char——>int——>long——>float——>double

package Type; 
public class typedemo {     
    public static void main(String[] args) {         
        //表达式的自动转换类型         
        byte a = 8;         
        int b = 10;         
        double c = 15.0;         
        double d;         
        d=a+b+c;         
        System.out.println(d);     
    }
}

此处的结果为33.0
而如果此处用的不是double来接收,,用的是int,则会出现如下的报错
image.png
注意事项:表达式的最终结果类型是由表达式的最高类型决定
在表达式中,byte、short、char是直接转换为int参与运算的

强制类型转换

是什么:就是强制将一种数据类型转换为另一种数据类型,如图
image.png
从底层原理来看:a虽然占32位,但是前24位都是0,后8位表示数据,完全可以放进byte的8位中不出现问题,但这个只能针对数据小的情况,假如a很大,强制转换位byte就会发生问题,会丢失后8位以外的数。
还有一种会丢失数据的情况,将小数的double类型转换为整数的int类型,会只保留整数。

运算符

+符号作连接符

package OperateDemo;
public class Demo1 {
    public static void main(String[] args) {
        int a = 5;
        System.out.println("abc" + 'a');
        System.out.println("abc" + a);
        System.out.println(5 + a);
        System.out.println("abc" + 5 + 'a');
        System.out.println(a + "" + 'a');
        System.out.println(a + 'a' + "abc");
        System.out.println("abc" + a + 'a');
        System.out.println("abc" + (a + 'a'));
    }
}

+号除了能在加减乘除中起到作用,在连接中也有作用,做连接符的时候,遵循一个口诀:能算就算,不能算就在一起
例如上面的代码中,第6行代码中字符串abc无法与字符a运算,所以说就连接在一起,结果为abca 再比如说第8行,因为a=5,是数字,与5能运算,故结果为10。
第11行中存在数字,字符,字符串,遵循从左往右的计算方法,字符a在ASCII码中表示为97,97可以与5计算,得到102,但是102不能与abc计算,所以最终答案为102abc。

自增、自减运算符

package OperateDemo;
public class Demo1 {
    public static void main(String[] args) {
        int a = 5;
        int b = 9;
        a++;
        System.out.println(a);
        ++a;
        System.out.println(a);
        b--;
        System.out.println(b);
        --b;
        System.out.println(b);
    }
}

从结果上看,++、–单独使用时,放在前后没有影响,但是在表达式中使用,就会有所区别。

package OperateDemo;
public class Demo1 {
    public static void main(String[] args) {
        int a = 5;
        int sum1 = 0,sum2 = 0;
        sum1=a++;
        System.out.println(sum1);
        a--;
        sum2=++a;
        System.out.println(sum2);
    }
}
sum1=5	sum2=6<br />从结果来看,++放在变量前面,先+1在运算;放在变量后面,先运算再+1(--同理)
package OperateDemo;
public class Demo1 {
    public static void main(String[] args) {
    int c = 3;
    int d = 5;
    int sum = c++ + ++c - --d + d-- - c-- + ++d + 2;
    System.out.println(sum);
    System.out.println(c);
    System.out.println(d);
    }
}

分析:
c 3 4 5 空 空 4 空
d 5 空 空 4 3 空 4
sum 空 3 +5 -4 +4 -5 +4 +2 =9
只要一步步来,就基本不会出错~~(maybe)~~

逻辑运算符

符号名字说明
&逻辑与都对才对
|逻辑或有一个对即为对
逻辑非你真我假,你假我真
^逻辑异或两个条件都对或都错则结果是错

短路逻辑运算符

&&短路与判断结果与&一样,过程是左边为false,右边不执行
||短路或判断结果与|一样,过程是左边为true,右边不执行
package OperateDemo;
public class Demo1 {
    public static void main(String[] args) {
        int c = 3;
        int d = 5;
        System.out.println(c>5&&++d>10);
        System.out.println(c>5&++d>10);
        System.out.println(d);
        System.out.println(c<5||++d>10);
        System.out.println(c<5|++d>10);
        System.out.println(d);
    }
}

结果为false false 6 true true 7
从结果上看,&、|是无论对错,都执行;&&、||是先执行左边的,判断对错,再根据对错判断是否执行右边。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值