final修饰符,可以修饰变量,方法,类
1, final修饰变量(包括局部变量和实例变量)
被final修饰的变量就成为常量(常量名应当大写),一旦赋值不能改变,(可以在初始化时直接赋值,在构造方法里可以为
其赋值,只能在这两种方法里二选一,常量不能不赋初值),常量没有默认初始值,final修饰符常和static修饰符一起使用。
例:
public class Test{
private static final int TESTNUM=2;
//有final修饰符这个变量就变成了常量
……
}
2,final修饰方法,final修饰的方法将不能被子类覆盖,保持方法的稳定不能被覆盖。
例:
public class Test{
public final int test(){
}
}
3,final修饰类,final修饰的类将不能被继承。final类中的方法也都是final的。
例:
public final class Test{
public final int test(){
}
}
注意:final,不能修饰构造方法,在父类中有常量属性,子类中使用常量属性时不会进行父类的类加载。静态常量如果值可
以确定,就不会加载该类,不能确定则会加载该常量所在的类。
不变模式,对象一旦创建属性就不会改变。用final修饰类(强不变模式),用final修饰属性(弱不变模式)。
不变模式的典型体现:java.lang.String类,不变模式可以实现对象的共享(可以用一个对象实例赋值给多个对象引用。)
池化的思想,把需要共享的数据放在池中(节省空间,共享数据)
String类可以用“ ”中的字面值创建对象。String类中,以字面值创建时,会到Java方法空间的串池空间中去查找,有就返回串池中字符串的地址,并把这个地址付给对象引用。没有会在串池里创建一个字符串对象,并返回其地址付购对象引用,当另一个以字面值创建对象时会重复上述过程。
堆空间中创建String类的对象,不会有上述的过程。
例:
public class TestString{
public static void main(String[] args){
String str1=”abc”;
String str2=”abc”;
String str3=new String(“abc”);
System.out.println(str1==str2);
System.out.println(str1==str3);
}
}
结果是:
true
false//在堆空间中创建的Srting是不会从串池中引用的
String类中的intern()方法会将在堆空间中创建的String类对象中的字符串和串池中的比对,有相同的串就返回这个串的串池中的地址。
不变模式在对于对象进行修改,添加操作是使相当麻烦的,会产生很多的中间垃圾对象。创建和销毁资源的开销是相当大的。
String类在字符串连接时的效率很低,因为它所产生的对象的属性是不能修改的,连接字符串时就只能创建新的对象。
对于很多的字符串连接,应当使用StringBuffer类或者是StringBuilder,使用这个类的对象来进行字符串连接时,不会有多余的中间对象生成,优化了效率。
例:
上边的字符串连接如果使用StringBuffer如下的写法
public class TestString{
public static void main(String[] args){
String str=“a”+“b”+”c”;
/*
以上创建String对象str时会创建1个中间String对象“ab”
如果使很多字符串相连就是穿件出许多的中间对象
*/
StringBuffer str=new StringBuffeter();
//使用StringBuffer就不会有中间对象生成
str.append(“a”);
str.append(“b”);
str.append(“c”);
String strs=str.toString();
}
}
分享到:
相关推荐
接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
总的来说,这三份Java代码为我们提供了学习和理解八皇后问题的不同角度,包括回溯法、位运算以及可能的优化技巧。通过阅读和分析这些代码,我们可以深入理解如何用编程语言解决实际问题,同时提升我们的算法设计和...
这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...
* Java开发职业发展道路:了解Java开发职业的发展道路,如从初级开发到高级开发的发展过程。 * Java开发职业规划:了解Java开发职业的规划,如职业发展目标、职业发展方向等。 * Java开发职业技能:了解Java开发职业...
下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...
通过阅读《Java核心编程思想》,读者不仅能全面掌握Java语言,还能了解到许多最佳实践和设计模式,从而在实际项目开发中游刃有余。这本书的2010最新版可能还包含了Java新特性的介绍,比如Java 7和8的Lambda表达式、...
Java 8快速入门教程为有一定Java基础的读者提供了一个指南,帮助他们快速了解并应用Java 8的新特性。无论你是想通过实践学习如何使用新的日期时间API,还是想掌握函数式编程的核心概念,本文都可以作为你的起点。...
本教程旨在为初学者提供一个全面的Java基础知识学习路径,帮助快速掌握编程技能。 1. **Java简介** Java是由Sun Microsystems公司(现已被Oracle收购)在1995年推出的,它的设计目标是“一次编写,到处运行”。...
《韩顺平30天学Java》是一门针对初学者设计的Java编程课程,旨在帮助学员在短短一个月的时间内掌握Java编程基础。该课程由知名IT教育专家韩顺平教授,以其独特的教学风格和深入浅出的讲解方式,使得复杂的编程概念变...
10. **Java标准库介绍**:了解Java标准库中常用的类和方法,如日期时间处理、字符串处理等。 11. **开发环境搭建**:介绍如何安装JDK、配置环境变量以及如何使用集成开发环境(IDE)如Eclipse、IntelliJ IDEA进行...
对于初学者来说,这是了解Java API的起点。 2. **类和接口**:这是文档的主体部分,详细列出了Java平台提供的所有类和接口。每个条目都包含了类或接口的定义、构造方法、方法、常量等详细信息。例如,`java.lang....
1. **Java语言概述**:了解Java的历史、特性以及其在软件开发中的应用。Java是由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年创建的,现在由Oracle公司维护。它的主要特点包括平台无关性(Write Once...
帮助你快速了解java-Swing,附带程序图例,关键代码
首先,我们需要了解Java数据库连接(JDBC)API,这是Java与数据库交互的标准接口。Java通过JDBC驱动程序与特定数据库通信。对于Sybase SQL Anywhere,我们需要的是对应的JDBC驱动,这里提供的`jconn3.jar`就是Sybase...
【中创JAVA笔试八套题】是一份针对Java编程语言的综合测试资料,包含了多方面的Java知识,旨在考察应试者的编程基础、面向对象概念、数据结构与算法、集合框架、异常处理、多线程、I/O流、网络编程、JVM原理以及Java...
了解Matomo Java Tracker有助于提升Java开发者在Web分析领域的专业技能,对于面试来说,可以展示对用户行为跟踪、数据分析以及如何将这些知识应用于实际项目的能力。以下是一些可能的面试问题: 1. 如何使用Matomo ...
1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...