02.自动转化,进制转化及选择

自动转化

因为浮点数的特殊性,long类型的变量可以自动转型为float类型的,这是由于float所能表示的值的范围大于long类型的。

例题1
byte b1=10;  
byte b2=20;  
byte b3=b1+b2; //有问题吗?

答案是有,因为两个byte类型相加,java虚拟机会默认他的结果是int类型,所以会编译出错。

例题2
int d = 5;
d = d++;

输出结果为5。
d++这样的语法是先将d++看作一个整体,其值是d原始的值,然后先进行d++,再进行赋值。有一瞬间d的值是6,但是随后被d++整体的值(5)赋值为5。而++d则不同。

例题3

二进制与十进制的转换:
图片
所以结果是10100

十进制小数部份用二进制表示的方法:在这里插入图片描述
一直X2,只要没有进一就添1,没有则补0
所以结果是0.001

选择语句

switch

当switch(x)x一定要与case中的类型相匹配。否则会出现类型不匹配(imcompatibal types)问题。

default可以放在case的前面,不影响判断。

例题1

下面语句运行结果为:()

		switch (5) {
		case 0:
			System.out.print(0);
		default:	//default的位置并不影响switch的判断
			System.out.print(5);
		case 1:
			System.out.print(1);
			break;
		case 2:
			System.out.print(2);
			break;
		}

A) 1 B) 5 C) 0 D) 51

答案是D,因为没有找到匹配项,所以程序走向default,完成default之后向后继续走(即是说default并不跳出选择分支,只有break才是跳出选择分支的),进入case 0的语句之后同理,碰到break之后完成该选择语句。

switch()里面必须是int和enum–即枚举类型,(short,char,byte)都会自动转化成int。但是long不可以自动转化成int,因为会丢失精度,所以switch()里面也就不可以是long。java把string也’转化’成int了,用string的hash值(int型,hashCode()的返回值)代替string进行switch,然后再对string做一遍equals()判断。把你的程序编译成字节码再反编译回来,看看有什么不一样就行了


图二

循环语句

带标签的continue和break语句
public class Test18 {
    public static void main(String args[]) {
        outer: for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i / 2; j++) {
                if (i % j == 0){
                    continue outer;
                }
            }
            System.out.print(i + "  ");
        }
    }
}

如果不使用标签,那么continue会继续进行内部的for循环。使用标签就是为了让循环从内部循环跳到外部循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值