JAVA_SE_Day14
生活随笔
收集整理的這篇文章主要介紹了
JAVA_SE_Day14
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
static(靜態的)關鍵字
- static 可以用來修飾 : 屬性 方法 內部類 代碼塊
使用static修飾屬性(即靜態變量)
- 類的屬性用是否使用static修飾可以分為: 靜態屬性 VS 非靜態屬性(實例變量)
- 實例變量 : 我們創建了類的多個對象,每一個對象都有一套類中的非靜態變量
當修改其中一個對象中的非靜態變量時,不會導致其他對象中同樣的屬性值的變化 - 靜態變量 : 我們創建了類的多個對象,所有對象共享靜態變量
當通過某一個對象修改靜態變量時,其他對象調用此靜態變量時,時修改后的值 - 靜態變量的加載要早于實例對象的創建
- 靜態變量的隨著類的加載而加載,可以通過"類.靜態變量"的方式進行調用
- 由于類只會加載一次,則靜態變量在內存中也只會存在一份,存儲在方法區的靜態域中
- 靜態變量舉例 Math.PI和System.out
使用static修飾方法(靜態方法)
- 隨著類的加載而加載,可以通過"類.靜態方法"或"實例.靜態方法"的方式來調用
- 靜態的方法中只能調用靜態的方法或屬性
非靜態的方法中能調用靜態的方法或屬性和非靜態的方法或屬性 - 在靜態的方法內,不能使用this和super關鍵子
- 以上的原因,主要是static的聲明周期和普通的結構不同,它隨類的加載而加載,當類加載的時候還沒有對象以及其非靜態的屬性和方法
什么時候需要對屬性和方法使用static
- 屬性 : 屬性被多個對象所共享的,不會隨著對象的不同而不同,此時這個屬性可以設置為static
- static方法 : 1. 操作靜態屬性的方法通常設置為static的
2. 工具類中的方法,習慣上聲明為static,比如Math,Arrays,Collections
單例設計模式
- 就是采取一定的方法保證整個軟件系統中,某個類只存在一個對象
3.聲明public,static的方法,返回類的對象
- 餓漢式單例模式 VS 懶漢式單例模式
- 餓漢式: 好處(線程安全) 壞處(對象加載時間過長,占用內存)
- 懶漢式: 好處(延遲對象的加載,節省內存) 壞處(線程不安全,需要修改代碼)
- 舉例 java.lang.Runtime
main()方法的使用說明
- main()方法作為程序的入口
- main()方法也是一個普通的靜態方法
- main()方法可以作為為我們與控制臺交互的一種方式
Static練習
public class Test {public static void main(String[] args) {Circle c1 = new Circle(1.5);Circle c2 = new Circle(2.5);System.out.println(c1.findArea());System.out.println(c2.findArea());System.out.println(c2.getId());System.out.println(Circle.getTotal());} }class Circle{private int id;private double radius;private static int total = 0;private static int init = 1001;public Circle(){total++;id = init++;}public Circle(double radius){this();this.radius = radius;}public double findArea() {return Math.PI * radius * radius;}public int getId() {return id;}public void setId(int id) {this.id = id;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public static int getTotal() {return total;}}餓漢式單例模式
// 單例設計模式 public class Singleton1 {public static void main(String[] args) {Bank bank1 = Bank.getInstance();Bank bank2 = Bank.getInstance();System.out.println(bank1);System.out.println(bank2);} }// 餓漢式單例模式 class Bank{// 1.始于話類的構造器(是為了避免在類的外部造對象)private Bank() {}// 2.在內部創建類的對象// 4.要求此對像也是static的,因為static方法里不能調用非靜態屬性private static Bank instance = new Bank();// 3.提供公共的放,返回類的對象public static Bank getInstance() {return instance;} }懶漢式單例模式
// 單例模式 public class Singleton2 {public static void main(String[] args) {Order order1 = Order.getInstance();Order order2 = Order.getInstance();System.out.println(order1);System.out.println(order2);} } // 懶漢式單例模式 class Order{// 1.始于話類的構造器(是為了避免在類的外部造對象)private Order() {}// 2.聲明當前類的對象,沒有初始化// 4.此對象也必須聲明為staticprivate static Order instance = null;// 3.聲明public,static的返回當前對象的方法public static Order getInstance() {if(instance == null ) {instance = new Order();}return instance;}}總結
以上是生活随笔為你收集整理的JAVA_SE_Day14的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现 蓝桥杯 算法训练 天数计算
- 下一篇: 视图集及路由