- 浏览: 12742 次
- 性别:
- 来自: 南京
最新评论
final
通常代表“这是无法改变的”。
一般使用到final的有三种情况:数据,方法,类。
final数据
final数据表示一个常量,一旦被初始化,就不能被改变。
若修饰域变量,则必须在域的定义处或者每个构造器中对final进行赋值(java中允许出现“空白final”,即被声明为final但是又没有给定初始值的域)。
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是对象本身是可以被改变的。
final方法
final修饰方法,可以阻止任何子类修改该方法,并且不能被覆盖。
final类
当将某个类定义为final时,该类就不能被继承。
final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
static
static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
static是不允许用来修饰局部变量。
static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
通常代表“这是无法改变的”。
一般使用到final的有三种情况:数据,方法,类。
final数据
final数据表示一个常量,一旦被初始化,就不能被改变。
若修饰域变量,则必须在域的定义处或者每个构造器中对final进行赋值(java中允许出现“空白final”,即被声明为final但是又没有给定初始值的域)。
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是对象本身是可以被改变的。
final方法
final修饰方法,可以阻止任何子类修改该方法,并且不能被覆盖。
final类
当将某个类定义为final时,该类就不能被继承。
final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
static
static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
static是不允许用来修饰局部变量。
static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
发表评论
-
Java中的四种引用
2018-03-22 15:12 4781、强引用(Strong Referen ... -
java中try、catch、finally中含有return的简单总结
2017-06-01 14:24 549try语句在返回前,将其他所有的操作执行完,保留好要返回的值 ... -
java泛型总结
2016-04-20 13:26 370泛型(generic):是指参数化类型的能力。可以定义泛型类 ... -
对象的序列化与反序列化
2016-04-18 10:22 486序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢 ... -
覆盖hashCode方法
2016-04-15 13:44 601覆盖hashCode方法规约: ... -
通用equals方法
2016-04-14 17:50 5061.1 equals方法 覆盖equals方法必须遵守的 ... -
java对象的创建建议
2016-04-14 16:39 3531.1 考虑用静态工厂方法代替构造器 示例: publi ... -
枚举类型
2016-04-06 15:50 01.1 基本enum特性 public e ... -
String深入理解
2016-04-05 15:33 462String对象是不可变的,每个看起来会修改String对象 ... -
java内部类详解
2016-04-01 15:59 461内部类 可以将一个类 ... -
理解java中的抽象类与接口
2016-03-31 21:42 440抽象方法:仅有声明没 ... -
面向对象四大基本特征
2016-03-31 14:48 425抽象: 抽象就是找出一 ... -
java回调机制
2016-03-31 09:56 413所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调 ... -
jdk动态代理
2016-03-30 17:28 426代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。 ... -
java继承与多态
2016-03-30 11:33 513继承 在java中使用extends ... -
java数据存储
2016-03-28 22:42 341Java中数据存储区域包括: 1.寄存器:最快的存储区,由编 ... -
java访问控制权限
2016-03-28 22:34 369java访问控制权限:private,protected,包 ... -
java基本类型
2016-03-28 22:31 315基本类型 java确定了每种基本类型的存储空间大小 基本类型 ... -
Java7语法新特性
2016-03-11 15:17 297转自:http://uuhorse.iteye.com/blo ...
相关推荐
在Java编程语言中,`final`和`static`是两个非常重要的关键字,它们分别用于定义不同类型的特性。下面我们将深入探讨这两个关键字的含义和用法。 首先,`final`关键字在Java中具有三个主要用途:修饰类、方法和变量...
此外,`final`类成员变量如果是`static`类型的,它将在类加载时初始化。 2. 编译期常量 对于`final`修饰的基本类型和`String`类型的变量,如果它们的值在编译时就能确定,编译器会将其视为编译期常量。这意味着...
public static final String INNER_TEXT = "Inner Text"; } } // 使用静态内部类 String innerText = OuterClass.InnerStaticClass.INNER_TEXT; ``` 5. 静态导包 静态导入允许你在代码中直接使用其他类的...
private static final SingletonClass instance = new SingletonClass(); public static SingletonClass getInstance() { return instance; } private SingletonClass() {} } ``` 2. 性能优化——延迟加载...
- **接口 (Interface)**: 接口则只能包含抽象方法(默认为 `public abstract`)和常量(静态最终变量,`static final`)。接口的定义如下: ```java interface DemoInterface { void method1(); void method2()...
注意,这里只是分配内存,静态变量的初始值设定(如final static)会在初始化阶段进行。 4. **解析**:将符号引用转换为直接引用。符号引用是编译时期的,而直接引用是运行时可以定位到的,比如类的直接引用就是...
Kotlin 中单例模式和 Java 的对比浅析 Kotlin 中单例模式是指在应用程序中确保某个类仅有一个实例,并提供一个全局访问点的机制。单例模式是一种常用的设计模式,在 Java 和 Kotlin 中都有多种实现方式。下面我们将...
1. **结构**:抽象类可以包含字段、构造器、非抽象方法以及抽象方法,而接口只能包含方法签名、常量(实际上就是public static final字段)。 2. **多重继承**:Java中,类只能单继承,即一个类只能有一个父类,但...
本文将深入浅析 ArrayList 和 LinkedList 的执行效率比较,帮助开发者们更好地选择合适的数据结构。 一、概念 ArrayList 是一个基于数组的 List 实现,允许快速访问元素,但是在从列表中部插入和删除元素时,速度...
public static final boolean EXTERNAL_RELEASE = true; 当变量为true的时候,就是正式包,反之就是测试包。每次上线的时候我就提醒自己要小心,千万不能出错了,然而终于湿脚了,一个渠道打包的时候,给忘记修改...
private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } ``` 2. **懒汉式**: 懒汉式单例在首次调用 `...
根据不同的使用场景和特性,Java中的变量可以分为三类:类变量(静态变量)、实例变量(对象变量)和常量。下面我们将深入探讨这些变量的区别。 1. 类变量(静态变量) 类变量使用`static`关键字修饰,它在类加载时...
private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } ``` 而懒汉模式则是在首次调用`getInstance`时才创建...
private static final Singleton INSTANCE = new Singleton(); } // 3. 提供静态方法获取唯一实例 public static Singleton getInstance() { return SingletonHolder.INSTANCE; } } ``` 这种实现方式保证了...
然而,由于内存限制,直接加载大尺寸的Bitmap可能导致内存溢出(OOM)异常,因此高效地加载和管理Bitmap至关重要。KJFrameForAndroid是一个开源的Android应用开发框架,它提供了一种优化的Bitmap加载策略来避免此类...
`private static final int REQUEST_CODE = 1; private void requestAlertWindowPermission() { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); intent.setData(Uri.parse("package:...