标签:通过 dss 转换 strong hit extend java基础 替换 method
目录
[TOC]
default: 是不写访问控制符
修饰属性、方法等
package src.basic.language;
import java.util.HashSet;
import java.util.Iterator;
/*
* 这个类主要讲了Static关键字的用法
* */
public class StaticKeywords {
static int paramStatic = 0;
int paramClass;
public static void main(String [] args) {
HashSet<String> set = new HashSet<String>();
set.add("滚滚");
set.add("加油");
set.add("向前滚");
// 对于static的方法、属性,可以不对类进行实例化,也可以调用
StaticKeywords.traverSetWithList(set);
StaticKeywords.traverseWithIterator(set);
// 被声明为static的成员在内存中只保存了一份,如果在一个地方修改了这个静态变量的值,那么其他对象引用这个属性的值也会做对应的修改
/*
* 这里例子省略,可以在备调用的类中声明一个static变量,之后在本类中实例化两个这个类型的变量来做观察
* */
}
public static void traverSetWithList(HashSet <String> set) {
Object [] objs = set.toArray();
for (Object obj : objs) {
System.out.println(obj);
set.add("再滚一次");
}
System.out.println();
}
public static void traverseWithIterator(HashSet <String> set) {
// 在静态方法中,没有饮食的传入this,下面这条语句报错
// this.paramClass = 1;
// 静态属性通过类名.属性来确定
StaticKeywords.paramStatic = 20;
Iterator<String> itr = set.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
}
System.out.println();
}
public void testStatic() {
this.paramClass = 20;
StaticKeywords.paramStatic = 30;
}
}
属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源
应用场景:
public class StaticKeywords {
// 定义了一个静态块
static {
// 存储在方法区中,在类加载的时候执行的代码块
System.out.println("静态块执行");
}
public static void main(String [] args) {
}
}
// 执行结果
静态块执行
// main函数中没有任何代码,但是还是打印了静态块的语句,说明静态块在所有类实例化之前执行
final修饰的成员变量以及方法,都不能改变
public class KeyWordsFilnal {
// 声明的同时修饰变量
final int a = 5;
// 声明的同时若没有初始化,要在构造函数中初始化
final int b;
public KeyWordsFilnal() {
// TODO Auto-generated constructor stub
// 构造方法中初始化
b = 10;
}
void finalParam() {
// 在类方法中,
final int c;
// 报错,使用之前要赋值
// System.out.println(c);
c = 6;
// 报错
// c = 7;
}
final void finalMethod() {}
public static void main(String [] args) {
KeyWordsFilnal obj = new KeyWordsFilnal();
}
}
// final的类可以继承其他的类
final class KeyWordsFinalChild extends KeyWordsFilnal{
// 报错,final修饰的方法不能被重写
// void finalMethod() {}
}
// 报错,final修饰的类不能继承
// class KeyWordsFinalGrandChild extends KeyWordsFinalChild{}
```
由static final修饰的成员变量成为常量,必须在声明的同时初始化,不可以被改变。由static final修饰的常量会在编译期间被替换。
package src.basic.language;
class KeywordsStaticFinal {
public static void main(String [] args) {
// 在编译时,程序还未执行前,KeywordsStaticFinal.PI被替换为3.14159
// 这句话和System.out.println(3.14159)是一样的,由于少了一步转换的操作,使用常量程序运行效率更高
System.out.println(KeywordsStaticFinal.PI);
}
public static final double PI= 3.14159;
// 编译错误,static public修饰的变量必须在声明时就赋值
// public staic final int NUM;
}
java基础01 访问控制,static、final和static final
标签:通过 dss 转换 strong hit extend java基础 替换 method
原文地址:https://www.cnblogs.com/gupan/p/9027809.html