Java訪問(wèn)權(quán)限原理與用法詳解
本文實(shí)例講述了Java訪問(wèn)權(quán)限原理與用法。分享給大家供大家參考,具體如下:
構(gòu)造者模式思想
進(jìn)行初始化,解決了多個(gè)構(gòu)造器重載,構(gòu)造器參數(shù)過(guò)多記不住的情況。
package day7;//聲明一個(gè)程序包
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();*/
/*構(gòu)造者模式思想 :進(jìn)行 初始化。解決了 多個(gè)構(gòu)造器重載 ,構(gòu)造器 參數(shù)過(guò)多 記不住的情況*/
Employee tom = new Employee().setNo(11).setAddress("北京").setAge(33).setSex("男").setName("Tom");
tom.show();
}
}
包
package day7;//聲明一個(gè)程序包,必須放在文件的第一行
層次結(jié)構(gòu)
package 父包[.子包.······];
包名:小寫(xiě)字母;通常是域名反轉(zhuǎn).部門(mén)名.項(xiàng)目名
包的好處
1.管理類(lèi)和接口
2.防止命名沖突
3.封裝,通過(guò)權(quán)限的控制,更好的
不同程序包下的類(lèi)的方法訪問(wèn)方式
1.導(dǎo)入程序包
import b.Exam2;//導(dǎo)入b包下的類(lèi)型Exam2 import b.*;//不能導(dǎo)入子包 import b.c.Exam3;//導(dǎo)入子包下的類(lèi)型
2.用完全限定命名的方式
b.Exam2 e2 = new b.Exam2();
注意:兩個(gè)包下有相同的類(lèi)型,必須用完全限定命名的方式進(jìn)行。
訪問(wèn)修飾符
Java將類(lèi)成員的可見(jiàn)度分為四個(gè)種類(lèi):

創(chuàng)建類(lèi)的時(shí)候只有兩種:public和默認(rèn)
static
static是一個(gè)修飾符
應(yīng)用:可以用于修飾屬性,方法,塊,類(lèi)
靜態(tài)變量
class 類(lèi)名{
//靜態(tài)成員變量,類(lèi)變量
public static 數(shù)據(jù)類(lèi)型 變量名;
}
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被所有對(duì)象共享
a.count ++;
b.count ++;
System.out.println(a.count);
System.out.println(b.count);
}
}

靜態(tài)變量隨著類(lèi)的創(chuàng)建的而存在,優(yōu)先于對(duì)象存在。
靜態(tài)變量(類(lèi)變量)
屬于類(lèi)的,被所有對(duì)象所共享,優(yōu)先于對(duì)象而存在的。
使用
類(lèi)名.靜態(tài)變量名
對(duì)象名.靜態(tài)變量名//少用,容易混淆
靜態(tài)變量和實(shí)例變量的區(qū)別
1.靜態(tài):類(lèi)加載的時(shí)候就加載了,就創(chuàng)建了,就分配空間默認(rèn)初始化了
實(shí)例:對(duì)象創(chuàng)建的時(shí)候,才能創(chuàng)建;
2.靜態(tài):屬于類(lèi)的,存在于方法區(qū)中的。
實(shí)例:屬于對(duì)象。存在于堆中。
3.靜態(tài):聲明周期很長(zhǎng),類(lèi)銷(xiāo)毀的時(shí)候,才回釋放。
實(shí)例:對(duì)象銷(xiāo)毀,會(huì)釋放。
靜態(tài)變量的應(yīng)用場(chǎng)合
當(dāng)數(shù)據(jù)共享時(shí),使用。
當(dāng)不需要對(duì)象,或無(wú)法創(chuàng)建對(duì)象時(shí)使用。
靜態(tài)塊
在類(lèi)中定義
static{
作用:初始化類(lèi)的,給類(lèi)變量初始化,靜態(tài)變量
}
局部代碼塊
定義:在方法中定義
public void show(){
{
局部代碼塊
作用:用來(lái)控制局部變量生命周期和使用范圍。
}
}
靜態(tài)方法
靜態(tài)方法中只能訪問(wèn)靜態(tài)成員。
靜態(tài)方法中不能使用this,super關(guān)鍵字。super可能訪問(wèn)到非靜態(tài)的成員。
靜態(tài)方法和實(shí)例方法的區(qū)別
1.靜態(tài):屬于類(lèi),用類(lèi)名直接調(diào)用
實(shí)例: 屬于對(duì)象調(diào)用。
2.靜態(tài):只能直接訪問(wèn)靜態(tài)成員(靜態(tài)變量,靜態(tài)方法)
實(shí)例:可以直接訪問(wèn)靜態(tài)的和非靜態(tài)的
3.靜態(tài):不能使用this,super。
實(shí)例:可以使用this,super。
應(yīng)用場(chǎng)合
當(dāng)不用創(chuàng)建對(duì)象訪問(wèn),形式簡(jiǎn)單或者不能創(chuàng)建對(duì)象,那么就要用靜態(tài)的方法了
靜態(tài)導(dǎo)入
導(dǎo)入的是類(lèi)中的靜態(tài)成員,導(dǎo)入之后可以直接使用。
格式
import static 包名.類(lèi)名.靜態(tài)變量名(方法);
單例模式
對(duì)類(lèi)只能創(chuàng)建一個(gè)對(duì)象
餓漢模式
類(lèi)加載時(shí),靜態(tài)變量就存儲(chǔ)了一個(gè)對(duì)象
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);
}
}
輸出結(jié)果
day7.Window@7852e922
day7.Window@7852e922
懶漢模式
類(lèi)加載時(shí),沒(méi)有指定對(duì)象,只有在應(yīng)用的時(shí)候才去創(chuàng)建對(duì)象,多線程的環(huán)境時(shí),推薦使用餓漢式,因?yà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);
}
}
返回結(jié)果
day7.Window@7852e922
day7.Window@7852e922
API之Math類(lèi)
常用方法

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
//四舍五入為一個(gè)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類(lèi)
Random rand1 = new Random(11);//11為隨機(jī)種子 System.out.println(rand1.nextDouble()); Random rand2 = new Random(11);// System.out.println(rand2.nextDouble());
隨機(jī)種子相同時(shí),相同隨機(jī)次數(shù)輸出結(jié)果相同。
Random rand3 = new Random(11); //int范圍內(nèi)的整數(shù) System.out.println(rand3.nextInt()); //[0,5) System.out.println(rand3.nextInt(5));
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
java實(shí)現(xiàn)AES 32位加密解密的方案
Oracle在其官方網(wǎng)站上提供了無(wú)政策限制權(quán)限文件(Unlimited Strength Jurisdiction Policy Files),我們只需要將其部署在JRE環(huán)境中,就可以解決限制問(wèn)題,下面給大家介紹下java實(shí)現(xiàn)AES 32位加密解密的方案,感興趣的朋友一起看看吧2021-11-11
Java NIO三大組件與ByteBuffer深入理解及使用
這篇文章主要介紹了Java NIO三大組件與ByteBuffer,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
Java位集合之BitMap實(shí)現(xiàn)和應(yīng)用詳解
這篇文章主要介紹了Java位集合之BitMap實(shí)現(xiàn)和應(yīng)用的相關(guān)資料,BitMap是一種高效的數(shù)據(jù)結(jié)構(gòu),適用于快速排序、去重和查找等操作,通過(guò)簡(jiǎn)單的數(shù)組和位運(yùn)算,可以在Java中實(shí)現(xiàn)BitMap,從而節(jié)省存儲(chǔ)空間并提高性能,需要的朋友可以參考下2024-12-12
SpringBoot整合Mybatis實(shí)現(xiàn)商品評(píng)分的項(xiàng)目實(shí)踐
本文介紹了SpringBoot整合Mybatis-plus框架實(shí)現(xiàn)對(duì)商品評(píng)分的功能實(shí)現(xiàn)流程和前端接口實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
深入了解Java數(shù)據(jù)結(jié)構(gòu)和算法之堆
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之堆 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01
JAVA使用Gson解析json數(shù)據(jù)實(shí)例解析
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。接下來(lái)通過(guò)本文給大家介紹JAVA使用Gson解析json數(shù)據(jù)實(shí)例解析,需要的朋友參考下吧2016-03-03

