Java訪問權限原理與用法詳解
本文實例講述了Java訪問權限原理與用法。分享給大家供大家參考,具體如下:
構造者模式思想
進行初始化,解決了多個構造器重載,構造器參數(shù)過多記不住的情況。
package day7;//聲明一個程序包 class Employee{ private String name; private int no; private int age; private String sex; private String address; //alt + shift + s public int getNo() { return no; } /* public Employee() { }*/ public Employee setNo(int no) { this.no = no; return this; } public String getName() { return name; } public Employee setName(String name) { this.name = name; return this; } public int getAge() { return age; } public Employee setAge(int age) { this.age = age; return this; } public String getSex() { return sex; } public Employee setSex(String sex) { this.sex = sex; return this; } public String getAddress() { return address; } public Employee setAddress(String address) { this.address = address; return this; } /* public Employee(String name, int no, int age, String sex, String address) { this.name = name; this.no = no; this.age = age; this.sex = sex; this.address = address; }*/ public void show() { System.out.println(no+","+name+","+age+","+sex+","+address); } } public class TestEmployee { public static void main(String[] args) { /* Employee tom = new Employee("Tom",12,33,"男","上海"); tom.show();*/ /*構造者模式思想 :進行 初始化。解決了 多個構造器重載 ,構造器 參數(shù)過多 記不住的情況*/ Employee tom = new Employee().setNo(11).setAddress("北京").setAge(33).setSex("男").setName("Tom"); tom.show(); } }
包
package day7;//聲明一個程序包,必須放在文件的第一行
層次結構
package 父包[.子包.······];
包名:小寫字母;通常是域名反轉.部門名.項目名
包的好處
1.管理類和接口
2.防止命名沖突
3.封裝,通過權限的控制,更好的
不同程序包下的類的方法訪問方式
1.導入程序包
import b.Exam2;//導入b包下的類型Exam2 import b.*;//不能導入子包 import b.c.Exam3;//導入子包下的類型
2.用完全限定命名的方式
b.Exam2 e2 = new b.Exam2();
注意:兩個包下有相同的類型,必須用完全限定命名的方式進行。
訪問修飾符
Java將類成員的可見度分為四個種類:
創(chuàng)建類的時候只有兩種:public和默認
static
static是一個修飾符
應用:可以用于修飾屬性,方法,塊,類
靜態(tài)變量
class 類名{ //靜態(tài)成員變量,類變量 public static 數(shù)據(jù)類型 變量名; }
package day7; class Child{ static int count; } public class TestChild { public static void main(String[] args) { Child a = new Child(); Child b = new Child(); //count被所有對象共享 a.count ++; b.count ++; System.out.println(a.count); System.out.println(b.count); } }
靜態(tài)變量隨著類的創(chuàng)建的而存在,優(yōu)先于對象存在。
靜態(tài)變量(類變量)
屬于類的,被所有對象所共享,優(yōu)先于對象而存在的。
使用
類名.靜態(tài)變量名
對象名.靜態(tài)變量名//少用,容易混淆
靜態(tài)變量和實例變量的區(qū)別
1.靜態(tài):類加載的時候就加載了,就創(chuàng)建了,就分配空間默認初始化了
實例:對象創(chuàng)建的時候,才能創(chuàng)建;
2.靜態(tài):屬于類的,存在于方法區(qū)中的。
實例:屬于對象。存在于堆中。
3.靜態(tài):聲明周期很長,類銷毀的時候,才回釋放。
實例:對象銷毀,會釋放。
靜態(tài)變量的應用場合
當數(shù)據(jù)共享時,使用。
當不需要對象,或無法創(chuàng)建對象時使用。
靜態(tài)塊
在類中定義
static{ 作用:初始化類的,給類變量初始化,靜態(tài)變量 }
局部代碼塊
定義:在方法中定義
public void show(){ { 局部代碼塊 作用:用來控制局部變量生命周期和使用范圍。 } }
靜態(tài)方法
靜態(tài)方法中只能訪問靜態(tài)成員。
靜態(tài)方法中不能使用this,super關鍵字。super可能訪問到非靜態(tài)的成員。
靜態(tài)方法和實例方法的區(qū)別
1.靜態(tài):屬于類,用類名直接調用
實例: 屬于對象調用。
2.靜態(tài):只能直接訪問靜態(tài)成員(靜態(tài)變量,靜態(tài)方法)
實例:可以直接訪問靜態(tài)的和非靜態(tài)的
3.靜態(tài):不能使用this,super。
實例:可以使用this,super。
應用場合
當不用創(chuàng)建對象訪問,形式簡單或者不能創(chuàng)建對象,那么就要用靜態(tài)的方法了
靜態(tài)導入
導入的是類中的靜態(tài)成員,導入之后可以直接使用。
格式
import static 包名.類名.靜態(tài)變量名(方法);
單例模式
對類只能創(chuàng)建一個對象
餓漢模式
類加載時,靜態(tài)變量就存儲了一個對象
package day7; class Window{ private static Window win = new Window(); private Window() { } public static Window getInstance() { return win; } } public class TestWindow { public static void main(String[] args) { Window win = Window.getInstance(); Window win1 = Window.getInstance(); System.out.println(win); System.out.println(win1); } }
輸出結果
day7.Window@7852e922
day7.Window@7852e922
懶漢模式
類加載時,沒有指定對象,只有在應用的時候才去創(chuàng)建對象,多線程的環(huán)境時,推薦使用餓漢式,因為是線
程安全的。
package day7; class Window{ private static Window win = null; private Window() { } public static Window getInstance() { if(win == null) { win = new Window(); } return win; } } public class TestWindow { public static void main(String[] args) { Window win = Window.getInstance(); Window win1 = Window.getInstance(); System.out.println(win); System.out.println(win1); } }
返回結果
day7.Window@7852e922
day7.Window@7852e922
API之Math類
常用方法
package day7; public class TestMath { public static void main(String[] args) { // Math System.out.println(Math.abs(‐33.4));//33.4 //大于等于44.6的最小整數(shù)‐》double System.out.println(Math.ceil(44.6));//45.0 //小于等于44.6的最大整數(shù)‐》double System.out.println(Math.floor(44.6));//44.0 //四舍五入為一個long數(shù)字 System.out.println(Math.round(44.6));//45 //求幾次方的值 System.out.println(Math.pow(3,2));//9.0 //double [0.0,1.0) double n = Math.random(); System.out.println(n); //1‐10 //[最小值,最大值] //(int)(Math.random()*(最大值‐最小值+1)+最小值) int num = (int)(Math.random()*(10‐1+1)+1); System.out.println(num); } }
Random類
Random rand1 = new Random(11);//11為隨機種子 System.out.println(rand1.nextDouble()); Random rand2 = new Random(11);// System.out.println(rand2.nextDouble());
隨機種子相同時,相同隨機次數(shù)輸出結果相同。
Random rand3 = new Random(11); //int范圍內的整數(shù) System.out.println(rand3.nextInt()); //[0,5) System.out.println(rand3.nextInt(5));
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
springboot集成普羅米修斯(Prometheus)的方法
這篇文章主要介紹了springboot集成普羅米修斯(Prometheus)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup)
這篇文章主要介紹了java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03SpringBoot啟動流程SpringApplication準備階段源碼分析
這篇文章主要為大家介紹了SpringBoot啟動流程SpringApplication準備階段源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04idea普通javaweb項目如何部署到tomcat(讀取web.xml文件)
這篇文章主要介紹了idea普通javaweb項目如何部署到tomcat(讀取web.xml文件),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08