日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA_SE_Day14

發(fā)布時(shí)間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA_SE_Day14 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

static(靜態(tài)的)關(guān)鍵字

  • static 可以用來修飾 : 屬性 方法 內(nèi)部類 代碼塊

使用static修飾屬性(即靜態(tài)變量)

  • 類的屬性用是否使用static修飾可以分為: 靜態(tài)屬性 VS 非靜態(tài)屬性(實(shí)例變量)
  • 實(shí)例變量 : 我們創(chuàng)建了類的多個(gè)對(duì)象,每一個(gè)對(duì)象都有一套類中的非靜態(tài)變量
    當(dāng)修改其中一個(gè)對(duì)象中的非靜態(tài)變量時(shí),不會(huì)導(dǎo)致其他對(duì)象中同樣的屬性值的變化
  • 靜態(tài)變量 : 我們創(chuàng)建了類的多個(gè)對(duì)象,所有對(duì)象共享靜態(tài)變量
    當(dāng)通過某一個(gè)對(duì)象修改靜態(tài)變量時(shí),其他對(duì)象調(diào)用此靜態(tài)變量時(shí),時(shí)修改后的值
  • 靜態(tài)變量的加載要早于實(shí)例對(duì)象的創(chuàng)建
  • 靜態(tài)變量的隨著類的加載而加載,可以通過"類.靜態(tài)變量"的方式進(jìn)行調(diào)用
  • 由于類只會(huì)加載一次,則靜態(tài)變量在內(nèi)存中也只會(huì)存在一份,存儲(chǔ)在方法區(qū)的靜態(tài)域中
  • 靜態(tài)變量舉例 Math.PI和System.out

使用static修飾方法(靜態(tài)方法)

  • 隨著類的加載而加載,可以通過"類.靜態(tài)方法"或"實(shí)例.靜態(tài)方法"的方式來調(diào)用
  • 靜態(tài)的方法中只能調(diào)用靜態(tài)的方法或?qū)傩?br /> 非靜態(tài)的方法中能調(diào)用靜態(tài)的方法或?qū)傩院头庆o態(tài)的方法或?qū)傩?/li>
  • 在靜態(tài)的方法內(nèi),不能使用this和super關(guān)鍵子
  • 以上的原因,主要是static的聲明周期和普通的結(jié)構(gòu)不同,它隨類的加載而加載,當(dāng)類加載的時(shí)候還沒有對(duì)象以及其非靜態(tài)的屬性和方法

什么時(shí)候需要對(duì)屬性和方法使用static

  • 屬性 : 屬性被多個(gè)對(duì)象所共享的,不會(huì)隨著對(duì)象的不同而不同,此時(shí)這個(gè)屬性可以設(shè)置為static
  • static方法 : 1. 操作靜態(tài)屬性的方法通常設(shè)置為static的
    2. 工具類中的方法,習(xí)慣上聲明為static,比如Math,Arrays,Collections

單例設(shè)計(jì)模式

  • 就是采取一定的方法保證整個(gè)軟件系統(tǒng)中,某個(gè)類只存在一個(gè)對(duì)象
  • 私有化類的構(gòu)造器
  • 聲明類的對(duì)象(static)
    3.聲明public,static的方法,返回類的對(duì)象
    • 餓漢式單例模式 VS 懶漢式單例模式
    • 餓漢式: 好處(線程安全) 壞處(對(duì)象加載時(shí)間過長(zhǎng),占用內(nèi)存)
    • 懶漢式: 好處(延遲對(duì)象的加載,節(jié)省內(nèi)存) 壞處(線程不安全,需要修改代碼)
    • 舉例 java.lang.Runtime

    main()方法的使用說明

    • main()方法作為程序的入口
    • main()方法也是一個(gè)普通的靜態(tài)方法
    • main()方法可以作為為我們與控制臺(tái)交互的一種方式
    public class Test {@org.junit.Testpublic void Test1() {}@org.junit.Testpublic void test1() {Person.counity = "China";Person p1 = new Person();p1.name = "小華";p1.age = 10;Person p2 = new Person();p2.name = "小明";p2.age = 20;p1.counity = "中國(guó)";System.out.println(p2.counity);p1.eat();p1.show();Person.show();}}class Person{static String counity;String name;int age;public void eat() {System.out.println("eat");}// 靜態(tài)方法public static void show() {System.out.println("show");} }

    Static練習(xí)

    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;}}

    餓漢式單例模式

    // 單例設(shè)計(jì)模式 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.始于話類的構(gòu)造器(是為了避免在類的外部造對(duì)象)private Bank() {}// 2.在內(nèi)部創(chuàng)建類的對(duì)象// 4.要求此對(duì)像也是static的,因?yàn)閟tatic方法里不能調(diào)用非靜態(tài)屬性private static Bank instance = new Bank();// 3.提供公共的放,返回類的對(duì)象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.始于話類的構(gòu)造器(是為了避免在類的外部造對(duì)象)private Order() {}// 2.聲明當(dāng)前類的對(duì)象,沒有初始化// 4.此對(duì)象也必須聲明為staticprivate static Order instance = null;// 3.聲明public,static的返回當(dāng)前對(duì)象的方法public static Order getInstance() {if(instance == null ) {instance = new Order();}return instance;}}

    總結(jié)

    以上是生活随笔為你收集整理的JAVA_SE_Day14的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。