常量
public class Demo3 {
int num1 ;
// 常量作為全局變量中沒有默認值糕殉,必須賦值//名字必須大寫
final int NUM2=200;
public static void main(String[] args) {
//常量就是在程序運行中不可變得锻梳,可以不用賦值
final int NUM = 20;
}
}
常量數(shù)組與常量數(shù)值
public class Demo4 {
final static int ARR[]= {1,2,3};
final static int a=100;
public static void main(String []args) {
ARR[1]=10;
a=1000;
// ARR=new int[] {1,2,3};
// 修飾基本數(shù)據(jù)類型的值不可變
// 修飾引用數(shù)據(jù)類型引用值不可變(地址)
}
}
單例模式
public class Singleton {
// 單例模式:一個類只有一個實例(一個類只能創(chuàng)建一個對象)
// ? ? ? ? ? ? 作用:節(jié)省資 源
//? ? ? ---餓漢模式:
// -----? 懶漢模式(懶加載):
// 1.問題一:怎么解決多例(不能讓其他類隨意用構(gòu)造器)
// ? 構(gòu)造器私有
// private Singleton(){}
// 2.問題二:怎么解決提供一個實例
// ? 解決方式:在單類中創(chuàng)建一個
// static Singleton sl=new Singleton();
// 3.問題三:不能隨意修改
// ? 解決方式:將實例也私有
// private static Singleton sl=new Singleton();
// 4.問題四:如何獲取實例
// 解決方法:提供公有的方法將這個實例返回去
// public static Singleton getInstance() {
// return sl;
// }
//? ---餓漢模式:
// private static Singleton sl=new Singleton();
//
// private Singleton(){}
//
// public static Singleton getInstance() {
// return sl;
// }
// 懶漢模式=========
private static Singleton sl;
private Singleton(){}
public static Singleton getInstance() {
if(sl== null) {
sl =new Singleton();
}
return sl;
}
public void test() {
System.out.print("111");
}
}
單例模式的測試
public class SingletonTest {
public static void main(String[] args) {
// Singleton s =Singleton.getInstance();
// Singleton s2 =Singleton.getInstance();
// System.out.println(s==s2);
Singleton.getInstance().test();
}
}
static 靜態(tài)
public class StaticDemo1 {
//? Static:靜態(tài)
// 可以修飾? 方法(靜態(tài)方法)、全局變量(靜態(tài)屬性(變量)、類變量)
// 不可以修飾? 類功舀、構(gòu)造器食寡、局部變量
//? 靜態(tài)屬性和靜態(tài)方法抵皱,可以直接通過類名調(diào)用
// 靜態(tài)方法可以直接訪問靜態(tài)成員呻畸,不可以直接訪問非靜態(tài)方法
// 靜態(tài)屬性歸這個類所有對象共享
// 靜態(tài)塊 :為靜態(tài)屬性初始化
int num;
//? 全局變量
? static int num2;
//? 類變量
? public static void test() {
? System.out .println(num2);
? }
? public static void main(String []args) {
// ? StaticDemo1 d=new StaticDemo1();
// ? d.num=100;
// ?
// ?
// ? num2=100;
// ? test();
? }
測試
public class StaticDemo1Test {
? public static void main(String []args) {
// ? StaticDemo1.num2++;
// ? StaticDemo1.test();
? StaticDemo1 d= new StaticDemo1();
? d.num++;
? d.test1();
? }
}
普通代碼塊
public class StaticDemo2 {
static int num;
public StaticDemo2(){
System.out.println("構(gòu)造器被調(diào)用");
}
public StaticDemo2(int num1){
System.out.println("有參構(gòu)造器被調(diào)用");
}
// 普通代碼塊:相當于構(gòu)造器的第一句話
{
System.out.println("普通代碼塊被調(diào)用");
}
// 靜態(tài)塊 :為靜態(tài)屬性初始化
// 執(zhí)行實際? :當類型信息加載到方法去就執(zhí)行了
static {
System.out.println("靜態(tài)塊被調(diào)用");
}
public static void main(String[] args) {
StaticDemo2 d = new StaticDemo2(1);
}
}