包的聲明與訪問、代碼塊

1、包的聲明與訪問

一、包的概念

java的包,其實就是咱們電腦系統中的文件夾,包裏存放的是類文件。java

當類文件不少的時候,一般咱們會採用多個包進行存放管理他們,這種方式稱爲分包管理。oracle

在項目中,咱們將相同功能的類放到一個包中,方便管理。而且平常項目的分工也是以包做爲邊界。dom

類中聲明的包必須與實際class文件所在的文件夾狀況相一致,即類聲明在a包下,則生成的.class文件必須在a文件夾下,不然,程序運行時會找不到類。函數

二、包的聲明格式

 

一般使用公司網址反寫,能夠有多層包,包名採用所有小寫字母,多層包之間用」.」鏈接this

 

類中包的聲明格式:spa

 

package 包名.包名.包名…;code

package com.oracle; //包的聲明,必須在有效代碼的第一行

import java.util.Scanner;//導入包
import java.util.Random; public class Demo {}

三、包的訪問

在訪問類時,爲了可以找到該類,必須使用含有包名的類全名(包名.類名)。對象

包名.包名….類名blog

如:作用域

java.util.Scanner

 

java.util.Random

 

com.oracle.Demo

 

 

帶有包的類,建立對象格式:包名.類名 變量名 = new 包名.類名();

                 com.oracle.Demo d = new com.oracle.Demo();

 

一、 前提:包的訪問與訪問權限密切相關,這裏以通常狀況來講,即類用public修飾的狀況。

二、類的簡化訪問

當咱們要使用一個類時,這個類與當前程序在同一個包中(即同一個文件夾中),或者這個類是java.lang包中的類時一般能夠省略掉包名,直接使用該類。

如:com.oracle包中有兩個類,PersonTest類,與Person類。咱們在PersonTest類中,訪問Person類時,因爲是同一個包下,訪問時能夠省略包名,即直接經過類名訪問 Person

類名 變量名 = new類名(); Person p = new Person();

三、當咱們要使用的類,與當前程序不在同一個包中(即不一樣文件夾中),要訪問的類必須用public修飾纔可訪問。

package com.oracle02; public class Person {}

四、import導包

導包的格式: import 包名.類名;

2、訪問修飾符

概括一下:在平常開發過程當中,編寫的類、方法、成員變量的訪問

要想僅能在本類中訪問使用private修飾;

l 要想本包中的類均可以訪問不加修飾符便可;

要想本包中的類與其餘包中的子類能夠訪問使用protected修飾

要想全部包中的全部類均可以訪問使用public修飾。

注意:若是類用public修飾,則類名必須與文件名相同。一個文件中只能有一個public修飾的類。

 3、代碼塊

一、局部代碼塊

局部代碼塊是定義在方法或語句中

特色: 以」{}」劃定的代碼區域,此時只須要關注做用域的不一樣便可

   方法和類都是以代碼塊的方式劃定邊界的

class Demo{ public static void main(String[] args) { //局部代碼塊
   {    int x = 1;    System.out.println("普通代碼塊" + x);   }    int x = 99;    System.out.println("代碼塊以外" + x); } }

運行結果:

普通代碼塊1

代碼塊以外99

二、構造代碼塊

構造代碼塊是定義在類中成員位置的代碼塊

特色:

l 優先於構造方法執行,構造代碼塊用於執行全部對象均須要的初始化動做

l 每建立一個對象均會執行一次構造代碼塊。

public class Person { private String name;//成員變量
    private int age;    //成員變量 //構造代碼塊
 { System.out.println("構造代碼塊執行了"); } //空參構造
 Person(){ System.out.println("Person無參數的構造函數執行"); } //有參構造
    Person(int age){ this.age = age; System.out.println("Person(age)參數的構造函數執行"); } } class PersonDemo{ public static void main(String[] args) { Person p = new Person();//建立空參對象
        Person p1 = new Person(23);//建立有參對象
 } }

運行結果:

構造代碼塊執行了
Person無參數的構造函數執行
構造代碼塊執行了
Person(age)參數的構造函數執行

三、靜態代碼塊

靜態代碼塊是定義在成員位置,使用static修飾的代碼塊。

特色:

它優先於主方法執行、優先於構造代碼塊執行,當以任意形式第一次使用到該類時執行。

該類無論建立多少對象,靜態代碼塊只執行一次。

可用於給靜態變量賦值,用來給類進行初始化。

public class Person { private String name; private int age; //靜態代碼塊
    static{ System.out.println("靜態代碼塊執行了"); } }

如在上述構造代碼塊中,加入該靜態代碼塊,運行結果:

靜態代碼塊執行了構造代碼塊執行了Person無參數的構造函數執行構造代碼塊執行了Person(age)參數的構造函數執行

相關文章
相關標籤/搜索