抽象类抽象类和普通类没什么大的差异,抽象类不能被实例化,必须用abstarct修饰,权限修饰符只能是public/protected类型;如果不写权限修饰符,则它默认就是public类型的。抽象类必须被继承才能实例化,所以它不能被final修饰。因为被final修饰的类不能被继承,被final修饰的方法不能被重写。抽象类被继承时,子类要重写父类的抽象方法,否则也只能将子类定义为抽象类。publicabstactvoidgetA();抽象类体现的是模板思想,在抽象类中已经实现了的成员就是模板。finalfinal:表示最终的,可以修饰类、方法、属性修饰变量,有且仅能被赋值一次。:修饰静态成员变量
目录1final基本用法1.1final修饰变量1.2final修饰方法参数1.3final修饰方法1.4final修饰类1.5空白final1.6staticfinal2jvm角度理解final不可变性3final多线程下可见性4final域重排序规则5面试常见问题5.1所有的final修饰的字段都是编译期常量吗?5.2final类型的类如何拓展?5.3如何理解private所修饰的方法是隐式的final?1final基本用法final:“这是无法改变的"final可以修饰:变量、参数、方法、类1.1final修饰变量修饰变量(变量、局部变量),当变量类型为:基本类型,一旦被赋值,该值不能被
目录1final基本用法1.1final修饰变量1.2final修饰方法参数1.3final修饰方法1.4final修饰类1.5空白final1.6staticfinal2jvm角度理解final不可变性3final多线程下可见性4final域重排序规则5面试常见问题5.1所有的final修饰的字段都是编译期常量吗?5.2final类型的类如何拓展?5.3如何理解private所修饰的方法是隐式的final?1final基本用法final:“这是无法改变的"final可以修饰:变量、参数、方法、类1.1final修饰变量修饰变量(变量、局部变量),当变量类型为:基本类型,一旦被赋值,该值不能被
本文主要讲述java的final关键字和相关细节。 老韩知识介绍: 示例代码如下:1publicclassFinalTest{2publicstaticvoidmain(String[]args){34}5}67/**8*(4)final修饰类时,不能被继承9*/10finalclassA{11privateStringname;12/**13*(1)final修饰成员变量,不能修改14*/15publicfinalintid=100;1617publicvoidupdateId(){18//id=104;19System.out.println(id);20}2122/**23*(2)f
本文主要讲述java的final关键字和相关细节。 老韩知识介绍: 示例代码如下:1publicclassFinalTest{2publicstaticvoidmain(String[]args){34}5}67/**8*(4)final修饰类时,不能被继承9*/10finalclassA{11privateStringname;12/**13*(1)final修饰成员变量,不能修改14*/15publicfinalintid=100;1617publicvoidupdateId(){18//id=104;19System.out.println(id);20}2122/**23*(2)f
结论:final修饰对象,对象的内容可变,引用不可变。final应用于类、方法和变量、对象时意义是不同的,但本质是一样的,都表示不可改变。但是修饰对象时要注意:因为对象是引用类型,存储的是地址,所以final修饰之后,指的是引用地址不可变。案例:finalchar[]chars={'1','2','3'};//定义final修饰的char数组对象System.out.println(chars);System.out.println("chars数组地址"+chars.hashCode());chars[0]='0';chars[2]='b';System.out.println(chars)
结论:final修饰对象,对象的内容可变,引用不可变。final应用于类、方法和变量、对象时意义是不同的,但本质是一样的,都表示不可改变。但是修饰对象时要注意:因为对象是引用类型,存储的是地址,所以final修饰之后,指的是引用地址不可变。案例:finalchar[]chars={'1','2','3'};//定义final修饰的char数组对象System.out.println(chars);System.out.println("chars数组地址"+chars.hashCode());chars[0]='0';chars[2]='b';System.out.println(chars)
220812_《EffectiveJava》第9条:try-with-resources优先于try-finally一、问题Java类库中包含许多需要通过调用close来关闭的资源,例如:InputStream、OutputStream和java.sql.Connection。在编程过程中如果没有关闭会产生性能问题。二、范例,使用try-finally使用try-finally来关闭资源,如下所示:publicclassFirstLineOfFile_Version1{staticStringfirstLineOfFile(Stringpath)throwsIOException{Buffer
220812_《EffectiveJava》第9条:try-with-resources优先于try-finally一、问题Java类库中包含许多需要通过调用close来关闭的资源,例如:InputStream、OutputStream和java.sql.Connection。在编程过程中如果没有关闭会产生性能问题。二、范例,使用try-finally使用try-finally来关闭资源,如下所示:publicclassFirstLineOfFile_Version1{staticStringfirstLineOfFile(Stringpath)throwsIOException{Buffer
“finally块一定会执行吗?”这是最近一个工作3年的小伙伴去面试的时候遇到的问题。你遇到这个问题会怎么回答呢?大家好,我是Mic,一个工作了14年的Java程序员对于这个问题,面试官想考察什么呢?问题解析这个问题,很明显是考察Java基础。finally语句块在实际开发中使用得非常多,它是和try语句块组合使用。通常情况下,不管有没有触发异常,finally语句块中的代码是必然会执行的,所以我们会把资源的释放、或者业务日志的打印放在finally语句块里面。所以,当大家把这个理念当成是固定的公式以后,就很少会去思考finally语句块什么情况下不执行。这也是难倒很多求职者的原因,所以我认为