java中的修饰符
static 表示静态,它可以修饰属性,方法和代码块。
1,static修饰属性(实例变量)(类变量),这个属性就可以用类名.属性名来访问,这个属性成为本类的类变量,为本类
对象所共有。这个属性全类公有。(共有的类变量与对象无关,只和类有关)。
例:
public class Test{
private static int testnum;
/*
如果实力变量前加上了static修饰符那么,这个变量叫做类变量
*/
……
}
类加载的过程,类本身是保存在文件中(字节码文件保存着类的信息)的,java通过I/O流把类的文件(字节码文件)读
入JVM(java虚拟机),这个过程称为类的加载。JVM(java虚拟机)通过类路径(CLASSPATH)来找要加载的字节码文件。
类变量,在加载时自动初始化,初始化规则和实例变量相同。
注意:类中的实例变量在创建对象时被初始化,static修饰的属性,类变量,在类加载时创建并进行初始化,类加载的过程只进行一次。类变量只会被创建并初始化一次。
2,static修饰方法(静态方法),使这个方法成为整个类所公有的方法,用
类名.方法名访问。
例:
public class Test{
private static int testnum;
public int testage;
public static int test(){
testnum++;
Test t=new Test();
t.testage
/*
在静态方法中只能访问静态属性,但是可以通过一上的
组合方式进行访问
*/
}
}
注意:
1) static修饰的方法,不直接能访问(可以通过组合方式访问)本类中非静态(static)成员(包括方法和属性),本类非静态(static)方法可以访问本类静态成员(包括方法和属性),可以调用静态方法。静态方法要慎重使用。静态方法中不能出现this关键字。
2) 关于静态方法的覆盖问题:
<1>父类中是静态方法,子类中不能覆盖为非静态方法,符合覆盖规则的前提下,父子类中,父类中静态方法可以被子类中
静态方法覆盖,但是没有多态。(在使用对象调用静态方法时其实是调用编译时类型的静态方法)
<2>父子类中,静态方法只能被静态方法覆盖,父子类中,非静态方法只能被非静态方法覆盖。
Java中main方法必须写成static的,类加载时无法创建对象,静态方法可以不通过对象调用所以main方法是静态的。在类加载时就可以通过main方法入口来运行程序。
注意:组合方式,需要在方法中创建一个所需要的对象,用这个对象来调用任意所需的该对象的内容,不再受只能访问静态的约束。
例:
public class Test{
private int a;
public static void main(String[] args){
}
public static void test(){
Test t=new Test();
t.a=20;
}
}
3,static修饰初始代码块,这个初始代码块就叫做静态初始代码块,这个代码块只在类加载时被执行一次。可以用静态初始代码块初始化一个类。
初始化代码块就是在类中的一个代码块,不是方法的实现。可用来初始化类中的属性。
例:
public class Test{
private static int testnum;//这个变量叫做类变量
static{//静态初始化代码块
testnum=12;
}
}
动态初始代码块,写在类体中的“{}”,这个代码块是生成对象初始化属性时运行的。这种代码块叫动态初始代码块。
例:
public class Test{
private static int testnum;//这个变量叫做类变量
{//动态初始化代码块
testnum=12;
}
}
类在什么时候会被加载,
构造(创建)对象必会加载该类。
调用类中静态方法或访问静态属性也会加载这个静态方法真正所在的类。
构造父类对象时,没有调用子类类中静态方法或访问静态属性,就不会加载子类。
构造子类对象时必会先加载父类。
类加载的延迟加载原则,只有在必须加载时才会加载。
单态模式,是生成一个本类的对象实例
例:
public class TestSingleton{
public static void main(String[] args){
}
}
class LaoGong{
/*
懒汉式实现,这种方法实现的单态模式只有在使用到这个
类的对象时才产生对象,但是在多线程情况下会出现问题
*/
private static LaoGong lg=null;
private LaoGong(){}
public static LaoGong newInstance(){
if (lg==null) lg=new LaoGong();
return lg;
}
}
class Wife{
/*
饿汉式的实现方法,这种方法实现的单态模式也不太完美,如果
这个类没有得到使用那么就会有一个垃圾对象生成,但是在多线
程条件下不会有问题
*/
private static Wife w=new Wife();
private Wife(){}//私有构造方法
public static Wife newInstance(){
return w;
}
}
分享到:
相关推荐
接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
【标签】:“七个JAVA游戏打包”作为标签,清晰地指出了这个压缩包的主题,方便用户快速识别其内容。对于Java开发者来说,这可能是学习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,还是想掌握函数式编程的核心概念,本文都可以作为你的起点。...
《韩顺平30天学Java》是一门针对初学者设计的Java编程课程,旨在帮助学员在短短一个月的时间内掌握Java编程基础。该课程由知名IT教育专家韩顺平教授,以其独特的教学风格和深入浅出的讲解方式,使得复杂的编程概念变...
对于初学者来说,这是了解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...
了解Matomo Java Tracker有助于提升Java开发者在Web分析领域的专业技能,对于面试来说,可以展示对用户行为跟踪、数据分析以及如何将这些知识应用于实际项目的能力。以下是一些可能的面试问题: 1. 如何使用Matomo ...
1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...
本文档将带你从零开始,逐步了解Java编程的基础知识。 一、从面向过程编程到面向对象编程的思维转变 在面向过程编程中,程序设计侧重于过程的顺序执行,即通过一系列步骤处理数据。而面向对象编程(OOP)则以数据为...
在IT行业中,视频压缩是一项重要的技术,特别是在大数据和互联网传输领域。Java作为一种广泛使用的编程语言,也提供了多种方法来处理视频压缩。...对于想要深入这一领域的开发者来说,了解并实践这些技术是十分必要的。
实习单位简介:\n武汉达内科技有限公司是一家专注于IT培训的机构,与国际知名企业和教育机构有紧密合作,提供Java、C++、C#等高端软件人才培养。其教学模式创新,注重实践,为IBM、微软、华为等知名企业输送了大量...
本教程旨在为初学者提供一个全面的Java基础知识学习路径,帮助快速掌握编程技能。 1. **Java简介** Java是由Sun Microsystems公司(现已被Oracle收购)在1995年推出的,它的设计目标是“一次编写,到处运行”。...