欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 包

1.1 什么是包?

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

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

1.2 包的主要作用

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

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

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

  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)建包

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

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

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

我們看一下src文件的有沒(méi)有com.example.myapp文件

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

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

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

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

2. 導(dǎo)包

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

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

導(dǎo)包的作用:

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

2.2 導(dǎo)包的語(yǔ)法

導(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)于包的說(shuō)法, 下列錯(cuò)誤的是:( )

A.包是一組類的集合
B.包能防止類的名字沖突
C.import 語(yǔ)句能夠?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人之間的交流一般都是通過(guò)對(duì)話,但是我們?cè)趺磁c程序進(jìn)行對(duì)話呢?

答:用Scanner類。

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

主要特點(diǎn):

  • 輸入源多樣:Scanner 可以從多種輸入源讀取數(shù)據(jù),包括標(biāo)準(zhǔn)輸入、文件、字符串等。
  • 類型豐富:Scanner 支持讀取多種數(shù)據(jù)類型,如 int、double、String 等。
  • 分隔符靈活:Scanner 使用分隔符(默認(rèn)為空白字符,包括空格、制表符、換行符等)來(lái)分隔輸入數(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)輸入流,通常用于從鍵盤讀取用戶輸入。通過(guò)傳遞 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)輸入您的愛(ài)好(用空格分隔):");
        String hobbies = scanner.next(); // 讀取下一個(gè) token
        System.out.println("你的愛(ài)好是:" + 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)文章

  • java的四種常用輸入方法你會(huì)幾種

    java的四種常用輸入方法你會(huì)幾種

    這篇文章主要介紹了java四種常用輸入方法的相關(guān)資料,分別是Scanner、System、命令行和JOptionPane,每種方法都有其特點(diǎn)和適用場(chǎng)景,文中提供了詳細(xì)的代碼示例,需要的朋友可以參考下
    2025-03-03
  • java中對(duì)象轉(zhuǎn)json字符串的三種常用方式

    java中對(duì)象轉(zhuǎn)json字符串的三種常用方式

    本文主要介紹了java中對(duì)象轉(zhuǎn)json字符串的三種常用方式,包含Jackson庫(kù),Gson庫(kù)和Hutool工具類這三種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Java實(shí)現(xiàn)最小高度樹(shù)

    Java實(shí)現(xiàn)最小高度樹(shù)

    本文主要介紹了Java實(shí)現(xiàn)最小高度樹(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 淺析SpringBoot中過(guò)濾器配置與應(yīng)用場(chǎng)景

    淺析SpringBoot中過(guò)濾器配置與應(yīng)用場(chǎng)景

    過(guò)濾器是 Web 三大組件之一,也是項(xiàng)目中常用的工具,這篇文章主要介紹一下過(guò)濾器的概念及在 Spring Boot 中的常用使用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • java排序算法圖文詳解

    java排序算法圖文詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之歸并排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望可以對(duì)你有所幫助
    2021-07-07
  • Java http加簽、驗(yàn)簽實(shí)現(xiàn)方案詳解

    Java http加簽、驗(yàn)簽實(shí)現(xiàn)方案詳解

    這篇文章主要介紹了Java http加簽、驗(yàn)簽實(shí)現(xiàn)方案詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-07-07
  • 解讀.idea文件的使用及說(shuō)明

    解讀.idea文件的使用及說(shuō)明

    文章介紹了IntelliJ IDEA項(xiàng)目中的.idea文件夾及其作用,包括編譯配置、工作空間配置、項(xiàng)目標(biāo)識(shí)文件、編碼配置、jar包信息以及插件配置等,同時(shí),文章提醒在版本控制時(shí)應(yīng)排除.idea文件夾,以避免版本沖突
    2025-01-01
  • IDEA如何一鍵部署SpringBoot項(xiàng)目到服務(wù)器

    IDEA如何一鍵部署SpringBoot項(xiàng)目到服務(wù)器

    文章介紹了如何在IDEA中部署SpringBoot項(xiàng)目到服務(wù)器,使用AlibabaCloudToolkit插件進(jìn)行配置部署,步驟包括設(shè)置服務(wù)名稱、選擇文件上傳類型、選擇jar文件、添加服務(wù)器信息、輸入上傳路徑、選擇上傳后執(zhí)行的腳本以及執(zhí)行前的操作命令
    2024-12-12
  • SpringBoot數(shù)據(jù)校驗(yàn)及多環(huán)境配置的問(wèn)題詳解

    SpringBoot數(shù)據(jù)校驗(yàn)及多環(huán)境配置的問(wèn)題詳解

    這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗(yàn)及多環(huán)境配置,本文以SpringBoot-02-Config 項(xiàng)目為例,給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-09-09
  • Java NIO Path接口和Files類配合操作文件的實(shí)例

    Java NIO Path接口和Files類配合操作文件的實(shí)例

    下面小編就為大家分享一篇Java NIO Path接口和Files類配合操作文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論