最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中包和導(dǎo)包、Scanner類、輸入源的詳細(xì)講解

 更新時(shí)間:2025年08月28日 08:52:37   作者:Code哈哈笑  
包是Java中用來組織類和接口的一種機(jī)制,通過使用包,可以避免命名沖突,同時(shí)也方便管理代碼結(jié)構(gòu),這篇文章主要介紹了Java中包和導(dǎo)包、Scanner類、輸入源的詳細(xì)講解,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 包

1.1 什么是包?

舉個(gè)例子,你和你的同學(xué)有不同的家庭,你們都有自己的爸爸媽媽,都有自己的家。在自己的家中你們可以按照自己愛好擺放東西,都互不干擾。但是,假如你們的家都在一起,你們就不能按照自己的喜好擺放東西了,你們之間會(huì)相互影響。

為了讓每個(gè)程序之間直接有相對(duì)好的隔離,就設(shè)置了包。包其實(shí)就是一個(gè)串文件夾,在不同的文件夾中可以設(shè)置相同的名字的文件。

1.2 包的主要作用

包(Package)是一種將類和接口組織在一起的機(jī)制。

  1. 命名空間管理
    包提供了一種命名空間管理機(jī)制,避免類名沖突。通過將類放在不同的包中,可以確保類名的唯一性。例如,多個(gè)項(xiàng)目中可能會(huì)有多個(gè)名為 Logger 的類,但通過將它們放在不同的包中,可以避免命名沖突。

  2. 訪問控制
    包還提供了訪問控制機(jī)制。通過使用不同的訪問修飾符(如 public、protected、默認(rèn)(即不寫訪問修飾符)和 private),可以控制類、方法和變量的可見性。例如,一個(gè)類的成員可以對(duì)同一個(gè)包中的其他類可見,但對(duì)其他包中的類不可見。

  3. 代碼組織
    包有助于將相關(guān)的類和接口組織在一起,使代碼更易于管理和維護(hù)。通常,一個(gè)包會(huì)包含一組具有相似功能或用途的類和接口。例如,java.util 包包含了各種實(shí)用工具類,如 List、Map、Set 等。

1.3 src文件

src 文件夾(或目錄)通常代表“source”的縮寫,用于存放項(xiàng)目的源代碼文件。這個(gè)文件夾是項(xiàng)目的核心部分,包含了所有的業(yè)務(wù)邏輯、類定義、函數(shù)實(shí)現(xiàn)等代碼文件。

項(xiàng)目的標(biāo)準(zhǔn)目錄結(jié)構(gòu)如下:

子文件夾組織:

src 文件夾通常會(huì)進(jìn)一步細(xì)分為多個(gè)子文件夾,以更好地組織代碼。
例如:

  • main/java:存放主要的 Java 源代碼文件。
  • main/resources:存放資源文件,如配置文件、靜態(tài)文件等。
  • test/java:存放測(cè)試代碼文件。
  • test/resources:存放測(cè)試資源文件。

1.4 創(chuàng)建包

包時(shí)在src文件下創(chuàng)建的

接著創(chuàng)建包

包名通常是小寫的,并且通常使用公司域名的逆序來命名,以確保全局唯一性。

把圖片中的package_name改為:com.example.myapp

這個(gè)包名com.examplemyapp是一個(gè)文件的名字嗎?

我們看一下src文件的有沒有com.example.myapp文件

src文件夾中只有com文件夾,沒有com.example.myapp文件,其實(shí).把包的名字分隔了,分割成三個(gè)鑲嵌的文件夾。

com.example.myapp文件夾中創(chuàng)建Myclass

在 Java 源文件的頂部,使用 package 關(guān)鍵字來指定包名。

目前該包的目錄結(jié)構(gòu)為:

2. 導(dǎo)包

2.1 什么是導(dǎo)包?

“導(dǎo)包”指的是使用 import 語句將一個(gè)類或接口從一個(gè)包中引入到當(dāng)前的編譯單元中,以便在代碼中可以直接使用這些類或接口,而不需要每次都寫完整的類名或接口名。

導(dǎo)包的作用:

  • 簡(jiǎn)化代碼
    導(dǎo)包可以讓你在代碼中直接使用類或接口的簡(jiǎn)單名稱,而不是完整的類名或接口名。這使得代碼更簡(jiǎn)潔、易讀。
    例如,java.util.ArrayList 可以簡(jiǎn)化為 ArrayList。
  • 避免命名沖突
    當(dāng)兩個(gè)不同的包中有同名的類或接口時(shí),通過導(dǎo)包可以明確指定你使用的是哪個(gè)包中的類或接口。
    例如,java.util.Date 和 java.sql.Date 都有 Date 類,通過導(dǎo)包可以區(qū)分它們。

2.2 導(dǎo)包的語法

導(dǎo)入單個(gè)類或接口

import package_name.ClassName;

package_name:包的名子。
ClassName:類的名字。

導(dǎo)入整個(gè)包中的所有類和接口

import package_name.*;

package_name:包的名子。

*:表示該包下的所有類

靜態(tài)導(dǎo)入(Java 5 及以上)

靜態(tài)導(dǎo)入允許你直接使用類中的靜態(tài)成員(如靜態(tài)方法和靜態(tài)字段),而不需要類名前綴。

import static package_name.ClassName.staticMember
  • static 關(guān)鍵字:表示靜態(tài)導(dǎo)入。
  • package_name:包的名子。
  • ClassName:類的名字。
  • staticMember:類中靜態(tài)成員變量或靜態(tài)方法。

示例:

  1. 單個(gè)類的導(dǎo)入,導(dǎo)入ArrayList

    import java.util.ArrayList;
    
    public class InOut {
        public static void main(String[] args){
            // 創(chuàng)建數(shù)組
            ArrayList<String> arr = new ArrayList<>();
            // 添加元素
            arr.add("Hello");
            arr.add("World");
            // 打印
            System.out.println(arr);
        }
    

    ArrayListjava.util包中的泛型類,是一個(gè)動(dòng)態(tài)數(shù)組。

  2. 整個(gè)包的導(dǎo)入,使用ArrayList和HashMap類

    import java.util.*;
    
    public class InOut {
        public static void main(String[] args){
            // 創(chuàng)建數(shù)組
            ArrayList<String> arr = new ArrayList<>();
            // 添加元素
            arr.add("Hello");
            arr.add("World");
            // 打印
            System.out.println(arr);
    
            HashMap<String, Integer> map = new HashMap<>();
            map.put("One", 1);
            map.put("Two", 2);
            System.out.println(map);
        }
    }
    

    ArrayListHashMapjava.util包中的兩個(gè)類

2.3 習(xí)題

關(guān)于包的說法, 下列錯(cuò)誤的是:( )

A.包是一組類的集合
B.包能防止類的名字沖突
C.import 語句能夠?qū)胍粋€(gè)指定的包
D.import static 能夠?qū)胍恍╈o態(tài)方法

答:C

import java.util.Arrays;

import java.util;  // 報(bào)錯(cuò)

import java.util.*;

第1行導(dǎo)入的是具體的包中的類。

第2行報(bào)錯(cuò),不能導(dǎo)入指定包。

第3行導(dǎo)入的是包下的所有類,用到這個(gè)包底下哪個(gè)類就回調(diào)用哪個(gè)。

3. Scanner 類

3.1 什么是 Scnner 類?

我們?nèi)伺c人之間的交流一般都是通過對(duì)話,但是我們?cè)趺磁c程序進(jìn)行對(duì)話呢?

答:用Scanner類。

Scanner 類是 Java 標(biāo)準(zhǔn)庫(kù)中的一個(gè)實(shí)用工具類,用于從標(biāo)準(zhǔn)輸入(通常是鍵盤輸入)或其他輸入源(如文件或字符串)讀取不同類型的輸入數(shù)據(jù)。Scanner 類提供了多種方法來讀取和解析不同類型的數(shù)據(jù),如整數(shù)、浮點(diǎn)數(shù)、字符串等。

主要特點(diǎn):

  • 輸入源多樣:Scanner 可以從多種輸入源讀取數(shù)據(jù),包括標(biāo)準(zhǔn)輸入、文件、字符串等。
  • 類型豐富:Scanner 支持讀取多種數(shù)據(jù)類型,如 int、double、String 等。
  • 分隔符靈活:Scanner 使用分隔符(默認(rèn)為空白字符,包括空格、制表符、換行符等)來分隔輸入數(shù)據(jù),但也可以自定義分隔符。
  • 簡(jiǎn)單易用:Scanner 提供了豐富的 API,使得讀取和解析輸入數(shù)據(jù)變得非常簡(jiǎn)單。

3.2 創(chuàng)建一個(gè) scanner 對(duì)象

Scanner類在java.util包中,使用Scanner需要調(diào)包。
示例:

import java.util.Scanner;

public class InOut {
    public static void main(String[] args){
        Scanner  sc = new Scanner(System.in);
        //讀取字符串
        System.out.println("請(qǐng)輸入您的名字");
        String s = sc.next();
        // 讀取整型
        System.out.println("請(qǐng)輸入您的年齡");
        int n = sc.nextInt();
        
        //打印
        System.out.println(s+"年齡是:"+n+"歲");
		
		// 使用結(jié)束后釋放資源
		sc.close()
    }
}

同學(xué)們可以發(fā)現(xiàn),創(chuàng)建Scanner對(duì)象的時(shí)傳入了一個(gè)參數(shù)System.in,為什么要傳參呢?

在創(chuàng)建 Scanner 對(duì)象時(shí)傳遞 System.in 參數(shù)是為了指定輸入源。System.in 是一個(gè)標(biāo)準(zhǔn)輸入流,通常用于從鍵盤讀取用戶輸入。通過傳遞 System.inScanner 構(gòu)造函數(shù),你可以讓 Scanner 從標(biāo)準(zhǔn)輸入(即鍵盤)讀取數(shù)據(jù)。

3.3 輸入源

  1. 標(biāo)準(zhǔn)輸入 (System.in)
    System.in 是一個(gè) InputStream 對(duì)象,表示標(biāo)準(zhǔn)輸入流,通常是從鍵盤輸入的數(shù)據(jù)。

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("請(qǐng)輸入您的名字:");
            String name = scanner.nextLine();
            System.out.println("你好," + name);
            scanner.close();
        }
    }
    
  2. 字符串輸入
    從字符串讀取數(shù)據(jù)時(shí),可以傳遞一個(gè) String 對(duì)象給 Scanner 構(gòu)造函數(shù)。

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            String input = "100 200 300";
            Scanner scanner = new Scanner(input);
            while (scanner.hasNextInt()) {
                int number = scanner.nextInt();
                System.out.println(number);
            }
            scanner.close();
        }
    }
    
  3. 文件輸入:
    從文件讀取數(shù)據(jù)時(shí),可以傳遞一個(gè) File 對(duì)象給 Scanner 構(gòu)造函數(shù)。

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            try {
                File file = new File("input.txt");
                Scanner scanner = new Scanner(file);
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine();
                    System.out.println(line);
                }
                scanner.close();
            } catch (FileNotFoundException e) {
                System.out.println("文件未找到!");
                e.printStackTrace();
            }
        }
    }
    

4. Scanner(System.in) 常用的方法

4.1 讀取數(shù)值

方法名描述
next()讀取下一個(gè) token(默認(rèn)以空白字符分隔)。
nextLine()讀取下一行(字符串)。
nextInt()讀取下一個(gè)整數(shù)。
nextDouble()讀取下一個(gè)雙精度浮點(diǎn)數(shù)。
nextBoolean()讀取下一個(gè)布爾值。
nextByte()讀取下一個(gè)字節(jié)。
nextShort()讀取下一個(gè)短整數(shù)。
nextLong()讀取下一個(gè)長(zhǎng)整數(shù)。
nextFloat()讀取下一個(gè)單精度浮點(diǎn)數(shù)。

nextLine():nextLine() 會(huì)讀取包括空格在內(nèi)的所有字符,直到遇到換行符\n為止。
next():next() 方法讀取輸入中的下一個(gè) token,并返回一個(gè)字符串。一個(gè) token 是由空白字符分隔的一段連續(xù)的字符序列。默認(rèn)的分隔符是空白字符,包括空格( )、制表符(\t)、換行符(\n)、回車符(\r)等。例如,輸入字符串 “Hello World” 會(huì)被 next() 方法分成兩個(gè) token:“Hello” 和 “World”。

示例:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

		System.out.print("請(qǐng)輸入您的名字:");
        String name = scanner.nextLine(); // 讀取一行(字符串)
        System.out.println("你好," + name);

        System.out.print("請(qǐng)輸入您的愛好(用空格分隔):");
        String hobbies = scanner.next(); // 讀取下一個(gè) token
        System.out.println("你的愛好是:" + hobbies);

        System.out.print("請(qǐng)輸入您的年齡:");
        int age = scanner.nextInt(); // 讀取下一個(gè)整數(shù)
        System.out.println("你的年齡是:" + age);

        System.out.print("請(qǐng)輸入您的身高(米):");
        double height = scanner.nextDouble(); // 讀取下一個(gè)雙精度浮點(diǎn)數(shù)
        System.out.println("你的身高是:" + height + " 米");

        scanner.close();
    }
}

4.2 檢查輸入

在使用 Scanner 類讀取輸入時(shí),檢查輸入的作用非常重要。這些檢查方法可以幫助你在讀取數(shù)據(jù)之前驗(yàn)證輸入的類型和格式,從而避免潛在的運(yùn)行時(shí)錯(cuò)誤和異常。

方法描述
hasNext()檢查是否還有下一個(gè) token(默認(rèn)以空白字符分隔)。
hasNextLine()檢查是否還有下一行。
hasNextInt()檢查是否還有下一個(gè)整數(shù)。
hasNextDouble()檢查是否還有下一個(gè)雙精度浮點(diǎn)數(shù)。
hasNextFloat()檢查是否還有下一個(gè)單精度浮點(diǎn)數(shù)。
hasNextLong()檢查是否還有下一個(gè)長(zhǎng)整數(shù)。
hasNextByte()檢查是否還有下一個(gè)字節(jié)。
hasNextShort()檢查是否還有下一個(gè)短整數(shù)。

示例:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("請(qǐng)輸入一個(gè)整數(shù):");
        if (scanner.hasNextInt()) {
            int number = scanner.nextInt();
            System.out.println("你輸入的整數(shù)是:" + number);
        } else {
            System.out.println("輸入的不是整數(shù)!");
            scanner.next(); // 清除錯(cuò)誤輸入
        }

        scanner.close();
    }
}

總結(jié) 

到此這篇關(guān)于Java中包和導(dǎo)包、Scanner類、輸入源的文章就介紹到這了,更多相關(guān)Java包和導(dǎo)包、Scanner類、輸入源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis-plus?插入修改配置默認(rèn)值的實(shí)現(xiàn)方式

    mybatis-plus?插入修改配置默認(rèn)值的實(shí)現(xiàn)方式

    這篇文章主要介紹了mybatis-plus?插入修改配置默認(rèn)值的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • springboot集成mqtt超級(jí)詳細(xì)步驟

    springboot集成mqtt超級(jí)詳細(xì)步驟

    這篇文章主要介紹了springboot集成mqtt超級(jí)詳細(xì)步驟,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Java基礎(chǔ)之String類使用與字符串比較

    Java基礎(chǔ)之String類使用與字符串比較

    String類代表字符串,java程序中的所有字符串文字(例如"abc")都被實(shí)現(xiàn)為此類的實(shí)例。本文將詳解String類的使用,以及如何進(jìn)行字符串比較
    2022-08-08
  • Java中出現(xiàn)InterruptedException異常的原因及解決方案

    Java中出現(xiàn)InterruptedException異常的原因及解決方案

    在Java多線程編程中,InterruptedException是一個(gè)常見但又容易被忽視的異常,它通常出現(xiàn)在線程被外部中斷時(shí),例如調(diào)用Thread.interrupt() 或線程池關(guān)閉時(shí),本文將通過一個(gè)實(shí)際的日志案例,分析InterruptedException 的產(chǎn)生原因、影響,需要的朋友可以參考下
    2025-06-06
  • smslib發(fā)短信實(shí)例代碼(電腦發(fā)短信)

    smslib發(fā)短信實(shí)例代碼(電腦發(fā)短信)

    smslib發(fā)短信實(shí)例,大家可以參考使用開發(fā)自己的程序
    2013-12-12
  • SpringBoot文件上傳的幾種常見方式(單文件上傳、多文件上傳)

    SpringBoot文件上傳的幾種常見方式(單文件上傳、多文件上傳)

    本文詳解SpringBoot文件上傳實(shí)現(xiàn),涵蓋單文件、多文件上傳及大小類型限制方法,強(qiáng)調(diào)隱私保護(hù)與非法文件防范的社會(huì)責(zé)任,適配不同場(chǎng)景需求,提供技術(shù)解決方案與合規(guī)實(shí)踐指導(dǎo),感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • Spring interceptor攔截器配置及用法解析

    Spring interceptor攔截器配置及用法解析

    這篇文章主要介紹了Spring interceptor攔截器配置及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • JAVA生成八位不重復(fù)隨機(jī)數(shù)最快的方法總結(jié)(省時(shí)間省空間)

    JAVA生成八位不重復(fù)隨機(jī)數(shù)最快的方法總結(jié)(省時(shí)間省空間)

    隨機(jī)數(shù)在實(shí)際中使用很廣泛,比如要隨即生成一個(gè)固定長(zhǎng)度的字符串、數(shù)字,這篇文章主要給大家介紹了關(guān)于JAVA生成八位不重復(fù)隨機(jī)數(shù)最快的方法,文中介紹的方法省時(shí)間省空間,需要的朋友可以參考下
    2024-03-03
  • Java如何讀取jar包中的resource資源文件

    Java如何讀取jar包中的resource資源文件

    這篇文章主要介紹了Java如何讀取jar包中的resource資源文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java實(shí)現(xiàn)圖片驗(yàn)證碼具體代碼

    Java實(shí)現(xiàn)圖片驗(yàn)證碼具體代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片驗(yàn)證碼具體代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論

襄城县| 阿巴嘎旗| 合肥市| 乐清市| 定远县| 武隆县| 遂平县| 资中县| 新乡市| 德安县| 焉耆| 星子县| 农安县| 遂宁市| 剑河县| 湘潭县| 满洲里市| 罗平县| 阿拉善盟| 德州市| 宝山区| 水富县| 南陵县| 宝坻区| 克什克腾旗| 革吉县| 来宾市| 明溪县| 上饶市| 灵山县| 广州市| 临湘市| 平塘县| 白山市| 伊春市| 隆化县| 莎车县| 英吉沙县| 赞皇县| 日土县| 高碑店市|