一.
final 最终. 可以用来对以下进行修饰.
1.属性
只能赋值一次,值不能改变.
可以在定义时赋值,或在构造函数中赋值(只能这两个地方).
2.方法
不能被覆盖,但可以被继承(继承指的是子类可用父类的方法).
3.类
要是非抽象类,修饰的类不能被继承.
4.函数的参数
可以读取该参数,但无法改变参数的值.
对于引用类型的参数来说,不可改变其引用,更可以修改其引用的对象.
package com.method.test;
class LoginInfo {
String userName;
String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public class TestFinal {
public static void checkInt(final int i) {
//i = 200; //不能通过编译,因为fianl不容许修改
System.out.println(i);
}
public static void checkLoginInfo(final LoginInfo login) {
//login = new LoginInfo();
//不能通过编译 new会新建实例,然后传引用给login;
login.setUserName("yun");
//final不可更改,不能改的是引用地址,不是不能改引用的对象。
}
public static void main(String[] args) {
int i = 1;
System.out.println(i);
checkInt(i);
System.out.println(i);
LoginInfo login = new LoginInfo();
login.setPassword("1235");
login.setUserName("mygod");
System.out.println("username:" + login.getUserName() + ",password:"
+ login.getPassword());
checkLoginInfo(login);
System.out.println("username:" + login.getUserName() + ",password:"
+ login.getPassword());
}
}
1
1
1
username:mygod,password:1235
username:yun,password:1235
二.
static 静态.
可以用来对以下进行修饰.
1.属性
2.方法
3.static代码块
声明为静态的话,就是属于类的,而非对象的,实例的.所以类属性,类方法是可以在任何实例对象创建时使用.这就是类变量与实例变量的区别了.
类在第一次使用前会完成static代码块(包括父类和自己的static代码块).并且static代码块是只做一次的,不似实例的instance initialize block是每建一个实例都会运行,是属于实例的.
package com.constructor.test;
class Parent {
int pm1;
int pm2 = 100;
int pm3 = pmethod();
{
System.out.println("Parent's instance initialize block");
}
public static int spm1 = 200;
static {
System.out.println("Parent's static initialize block");
}
Parent() {
System.out.println("Parent's default constructor");
}
static void staticmethod() {
System.out.println("Parent's staticmethod");
}
int pmethod() {
System.out.println("Parent's method");
return 3;
}
}
class Child extends Parent {
int cm1;
int cm2 = 1000;
int cm3 = cmethod();
Other co;
public static int scm1 = 2000;
{
System.out.println("Child's instance initialize block");
}
static {
cmethod2(); // 要static的方法才行
System.out.println("Child's static initialize block");
}
{
System.out.println("Child's instance initialize block 2222");
}
Child() {
co = new Other();
System.out.println("Child's default constructor");
}
Child(int m) {
this();
cm1 = m;
System.out.println("Child's self-define constructor");
}
static void staticmethod() {
System.out.println("Child's staticmethod");
}
int cmethod() {
System.out.println("Child's method");
return 3;
}
static void cmethod2() {
System.out.println("Child's method2!!!");
}
}
class Other {
int om1;
Other() {
System.out.println("Other's default constructor");
}
}
public class TestConstructor {
public static void main(String args[]) {
Child c;
System.out.println("program start");
System.out.println("Child.scm1=" + Child.scm1);
// System.out.println("c.cm3="+c.pm2); pm2还未被初始化!
c = new Child(10);
System.out.println("program end");
Child d = new Child(20);
}
}
program start
Parent's static initialize block
Child's method2!!!
Child's static initialize block
Child.scm1=2000
Parent's method
Parent's instance initialize block
Parent's default constructor
Child's method
Child's instance initialize block
Child's instance initialize block 2222
Other's default constructor
Child's default constructor
Child's self-define constructor
program end
Parent's method
Parent's instance initialize block
Parent's default constructor
Child's method
Child's instance initialize block
Child's instance initialize block 2222
Other's default constructor
Child's default constructor
Child's self-define constructor
分享到:
相关推荐
"Java关键字final、static使用总结" 在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用...
Java中的`final`和`static`关键字是编程中非常重要的两个修饰符,它们分别用于不同的场景,以确保代码的稳定性和高效性。 首先,`final`关键字主要用于表示不可变性。它可以用来修饰类、方法和变量。对于类,如果一...
### Java中的final关键字详解 #### 一、final的概述与用途 `final`关键字在Java中扮演着重要的角色,它通常被用来表示“不可变”的特性。`final`可以用来修饰类、方法以及变量,其核心目的是为了保护数据的安全性...
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写。 示例: public abstract class MyClass{} public abstract String myMethod(); 2. boolean boolean关键字用于定义布尔类型变量...
Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...
需要注意的是,虽然像`const`和`goto`这样的关键字在Java中并未使用,但在某些情况下仍被视为保留字。此外,诸如`true`、`false`和`null`虽然不是关键字,但在Java中有着特殊的意义,不应将它们用作标识符。
黑色为保留字(现阶段没有在 Java 程序当中使用,但是先预约保留下来,以备日后使用),保留字跟关键字具有同样的等级,不可被用来作为标识符。 常用的 Java 关键字包括: * 访问修饰符:public、private、...
面向对象部分让人搞晕的几个关键字,我这里专门针对这几个关键字进行了整理相关的面试题,只要你能做对80%,就证明你面向对象基本学懂了
### Java关键字分类解释 ...- **const/goto**: `const`和`goto`是保留关键字,在当前版本的Java中并未使用。 以上是Java关键字的主要分类及其简要介绍。熟练掌握这些关键字对于编写高质量的Java程序至关重要。
了解并熟练使用变量是编写Java程序的基础,而关键字则是Java语法的精髓,如public、private、static、final等,它们各有特定含义,用于控制代码的行为和访问权限。 接着,我们关注“MyEclipse快捷键大全”。...
在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来声明一个变量、方法或类为不可变的。在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量...
Java 中 final 和 static ...通过上面的解释,我们可以看到 final 和 static 关键字在 Java 中的不同用法。final 关键字用于表示不可变的变量、方法、类等,而 static 关键字用于表示静态的成员变量、方法、代码块等。
本总结旨在梳理Java中的关键字,包括this和super的使用、final修饰符的含义、static关键字的作用、以及abstract的使用规则。 首先,关键字this用于区分成员变量和局部变量。在Java中,如果方法中的参数名称和成员...
在Java编程语言中,`final`和`static`是两个非常重要的关键字,它们分别用于定义不同类型的特性。下面我们将深入探讨这两个关键字的含义和用法。 首先,`final`关键字在Java中具有三个主要用途:修饰类、方法和变量...
Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在Java中,关键字是被语言保留并赋予特殊含义的标识符,它们不能用作变量名、方法名或者类名。这篇文档《Java关键字详细...
Java中的`final`关键字是一种非常重要的修饰符,它用于声明变量、方法或类,以确保它们的不可变性。在深入探讨`final`的使用方法之前,我们需要理解为什么在编程中会需要不可变性。 不可变性在软件设计中起着至关...
Java多线程关键字final和static详解 Java多线程编程中,final和static关键字扮演着非常重要的角色,它们可以帮助开发者编写更加安全、可靠的多线程程序。在本文中,我们将深入探讨final和static关键字在Java多线程...
总之,`final`和`static`是Java中不可或缺的关键字,它们各自有其特定的使用场景。理解并正确使用它们可以提高代码的可读性、安全性和效率。在设计类和接口时,明智地使用`final`和`static`可以帮助实现更好的设计...