那些年我们掉过的java的坑(三)

本文深入探讨Java编程中易忽略的细节,如标识符使用、循环控制、final关键字的多维解读、实例变量特性、volatile与strictfp作用、不可变类设计、数据类型转换规则及条件判断限制。通过实例解析,帮助读者避开Java编程陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

那些年我们掉过的java的坑(三)

1.java语言中标识符的第一个字是可以使用$的
2.如何跳出多重循环
        ko:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (j == 5)
                    break ko;
            }
        }
3.final、finally、finalize区别

final变量:变量不可变
final方法:使用内联(inline)机制,直接进方法插入调用出,而不使用方法调用
final参数:输入的参数在函数内部不能被修改
final类:不能被继承
finally:异常处理一定会执行到的部分
finalize:是Objiect中的一个方法,垃圾回收器执行回收对象finalize()来进行回收这个对象

4.实例变量就是变量归对象所有,就是普通的成员变量在随类被new后成为实例变量。static方法中不能存在static变量(存在与方法区),方法中只存在局部变量(栈)。
5.volatile关键字应用于多线程环境。经常访问的变量会被缓存起来,每次读不一定都是去内存中读,使用volatile可以每一次去内存读。防止多线程时被改变。
6.strictfp关键字用来声明一个类、接口、方法,表示完全按照标准进行浮点计算(JVM在不同环境下可能不会按照标准计算,所有需要声明)
7.如何编写一个不可变类,让内部和外部的关系只有clone,不存在引用(不存在指针给了外部)。区分【值传递call by value】和【引用传递call by reference】。只有基本类型是值传递。Integer这些也是引用传递。
class ImmutableClass{
	private Date d;
	public ImmutableClass(Date d) {
		this.d = (Date)d.clone();         //解除外部输入的引用
	}
	public Date getDate() {
		return (Date)d.clone();           //解除内存输出的引用
	}
}
8.Integer这些也是引用传递,当是Integer是不可变类,不存在修改值的方法,所以a和b没有关系了。
public class Test_1 {
	public static void main(String[] args) {
		Integer a = 1;
		Integer b = 1;
		a++;
		//结果a=2;b=1
		System.out.println("a="+a+";b="+b);
	}
}
9.只要short char byte参与运算,至少会转化为int。但是+=这些不会,因为这个内部隐含了强制类型转换。
10.java中if只接受boolean类型。
int a=1;
if(a){} ;   //报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值