中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中有哪些修飾符關鍵詞

發布時間:2021-07-01 17:33:44 來源:億速云 閱讀:200 作者:Leah 欄目:編程語言

這篇文章給大家介紹Java中有哪些修飾符關鍵詞,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Java修飾符是你添加到變量、類和方法以改變其含義的關鍵詞。它們可分為兩組:

  1. 訪問控制修飾符

  2. 非訪問修飾符

讓我們先來看看訪問控制修飾符,以及如何使用它們的一些代碼示例。

修飾符

說明

public

公共可見

private

類可見

protected

包和所有的子類可見

那么如何使用這三種訪問控制修飾符呢?請看下面兩個類。請忽略此處代碼的低效,因為這是教程。

創建一個名為project/mypackage/Person.java文件,并添加以下代碼:

package mypackage; class Person {     private String firstname;     private String lastname;     protected void setFirstname(String firstname) {         this.firstname = firstname;     }     protected void setLastname(String lastname) {         this.lastname = lastname;     }     protected String getFirstname() {         return this.firstname;     }     protected String getLastname() {         return this.lastname;     } }

上面的Person類有private變量和protected方法。這意味著這些變量將只能從類訪問,方法將只能從mypackage包訪問。

接下來創建一個名為project/mypackage/Company.java的文件,并添加以下代碼:

package mypackage; import java.util.*; public class Company {     private ArrayList<Person> people;     public Company() {         this.people = new ArrayList<Person>();     }     public void addPerson(String firstname, String lastname) {         Person p = new Person();         p.setFirstname(firstname);         p.setLastname(lastname);         this.people.add(p);     }     public void printPeople() {         for(int i = 0; i < this.people.size(); i++) {             System.out.println(this.people.get(i).getFirstname() + " " + this.people.get(i).getLastname());         }     } }

上面的類是公共的,因此它可以從包內部和外部的任何類進行訪問。它有一個只能在類內訪問的私有變量,以及一堆的公共方法。由于Person類和Company類共享相同的包,所以Company類可以訪問Person類以及所有它的方法。

為了完成訪問控制修飾符的示范,讓我們在一個新的project/MainDriver.java文件中創建一個驅動程序類:

import mypackage.*; public class MainDriver {     public static void main(String[] args) {         Company c = new Company();         c.addPerson("Nic", "Raboy");         c.printPeople();         Person p = new Person();         p.setFirstname("Maria");         p.setLastname("Campos");     } }

請記住,由于Company類是公共的,所以我們在添加和打印人的時候沒有問題。然而,由于Person類是受保護的,所以我們會得到一個編譯時錯誤,因為MainDriver不是mypackage包的一部分。

現在,讓我們來看看現有的非訪問修飾符,以及如何使用它們的一些示例代碼。

修飾符

說明

static

用于創建類、方法和變量

final

用于最終確定類、變量和方法的實施方式

abstract

用于創建抽象方法和類

synchronized

用于多線程的同步機制對資源進行加鎖,使得在同一個時間,只有一個線程可以進行操作

Volatile

一個變量聲明為volatile,就意味著這個變量是隨時會被其他線程修改的,因此不能將它cache在線程memory中。

那么如何使用這五個非訪問修飾符呢?

Java中static修飾符的一個很好的例子就是:

int max = Integer.MAX_VALUE
int numeric = Integer.parseInt("1234");

在上面的例子中,請注意我們利用了Integer類中變量和方法,而不是先實例化。這是因為那些特定的方法和變量都是靜態的。

abstract修飾符則略有不同。你可以創建一個帶方法的類,但它們基本只能定義。你不能對它們添加邏輯。例如:

abstract class Shape {     abstract int getArea(int width, int height); }

然后在子類里,你才可以增加例如下面這樣的代碼:

class Rectangle extends Shape {     int getArea(int width, int height) {         return width * height;     } }

下面要講講synchronizedvolatile修飾符。

先來看一個線程的例子,在這個例子里我們將從兩個不同的線程去訪問相同的方法:

import java.lang.*; public class ThreadExample {     public static void main(String[] args) {         Thread thread1 = new Thread(new Runnable() {             public void run() {                 print("THREAD 1");             }         });         Thread thread2 = new Thread(new Runnable() {             public void run() {                 print("THREAD 2");             }         });         thread1.start();         thread2.start();     }     public static void print(String s) {         for(int i = 0; i < 5; i++) {             System.out.println(s + ": " + i);         }     } }

運行上述代碼將輸出打印一個隨機的順序。可能是連續的,也可能不連續,取決于CPU。然而,如果我們使用synchronized修飾符,那么***個線程必須在第二個線程開始打印之前完成。print(String s)方法可以是這樣的:

public static synchronized void print(String s) {     for(int i = 0; i < 5; i++) {         System.out.println(s + ": " + i);     } }

接下來,讓我們看看使用volatile 修飾符的例子:

import java.lang.*; public class ThreadExample {     public static volatile boolean isActive;     public static void main(String[] args) {         isActive = true;         Thread thread1 = new Thread(new Runnable() {             public void run() {                 while(true) {                     if(isActive) {                         System.out.println("THREAD 1");                         isActive = false;                     }                 }             }         });         Thread thread2 = new Thread(new Runnable() {             public void run() {                 while(true) {                     if(!isActive) {                         System.out.println("THREAD 2");                         try {                             Thread.sleep(100);                         } catch (Exception e) {                         }                         isActive = true;                     }                 }             }         });         thread1.start();         thread2.start();     } }

關于Java中有哪些修飾符關鍵詞就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泾川县| 夹江县| 岳普湖县| 进贤县| 灯塔市| 枣强县| 大冶市| 利川市| 玉林市| 稷山县| 虎林市| 磐石市| 和静县| 大渡口区| 黔江区| 闽侯县| 娱乐| 南华县| 邵阳县| 靖宇县| 伊宁市| 抚州市| 定日县| 休宁县| 通江县| 太湖县| 嘉黎县| 曲沃县| 洪湖市| 宝鸡市| 石楼县| 长兴县| 合肥市| 赣州市| 岗巴县| 遂宁市| 景谷| 探索| 新龙县| 台江县| 油尖旺区|