Java 练习题摘录

2018-01-21 23:23:08

1、finally与return同时出现的情况

  • finally中有return语句则会使try...catch中的return语句失效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public static void main(String[] args) {
        System.out.print(getNumber(0));
        System.out.print(getNumber(1));
        System.out.print(getNumber(2));
        System.out.print(getNumber(4));
    }
 
    public static int getNumber(int num) {
        try {
            int res = 2 / num;
            return res;
        } catch (Exception e) {
            return 0;
        } finally {
            if (num == 0) {
                return -1;
            }
            if (num == 1) {
                return 1;
            }
        }
    }
 
输出为:-1110
  •  finally中对try...catch中的return语句的修改是不会产生效果的
1
2
3
4
5
6
7
8
9
10
11
12
13
    public static void main(String[] args) {
        System.out.print(getNumber(2));
    }
 
    public static int getNumber(int num) {
        try {
            return num;
        } finally {
            num *= 2;
        }
    }
 
输出为:2

 2、初始化静态变量--执行静态代码块--执行main方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    static int i = 6;
    static {
        i += 9;
    }
 
    public static void main(String[] args) {
        System.out.print(i);
    }
 
    static {
        i /= 3;
    }
 
输出为:5

 3、char,byte,short的类型转换问题

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0;
  • 例子:short s = 1000,short r = -20000。

char:

  • char类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(即为0);
  • 最大值是 \uffff(即为65,535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = 'A'。

byte,short和char会自动转换成int进行运算,这就会导致出错。

1
2
3
4
5
6
7
8
9
10
11
byte a1 = 2, a2 = 4, a3;
short s = 16;
a2 = s;  // 出错,因为s会默认转成int,所以需要强转
a3 = a1 * a2;  // a1 * a2会默认转成int,所以需要强转
 
但是+=是不会产生类型转换问题的:
short s;
s = s + 1// 出错,会转成int,需要强转成short
 
short s;
s += 1; // 正确

 

posted @   hyserendipity  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示