1. 程式人生 > 實用技巧 >JAVA 學習中的基礎問答

JAVA 學習中的基礎問答

目錄

1. 為什麼要配置環境變數?

答:為了讓javac命令(編譯命令)和Java命令(執行命令)能在任何資料夾都能執行。

2. JAVA多執行緒的理解

程序與執行緒

程序是程式的一次動態執行過程,它需要經歷從程式碼載入,程式碼執行到執行完畢的一個完整的過程,這個過程也是程序本身從產生,發展到最終消亡的過程。多程序作業系統能同時達執行多個程序(程式),由於 CPU 具備分時機制,所以每個程序都能迴圈獲得自己的CPU 時間片。由於 CPU 執行速度非常快,使得所有程式好像是在同時執行一樣。

執行緒是程序的基礎之上進行進一步的劃分。所謂多執行緒是指一個程序在執行過程中可以產生多個更小的程式單元,這些更小的單元稱為執行緒,這些執行緒可以同時存在,同時執行,一個程序可能包含多個同時執行的執行緒。

3. File類的建構函式及其方法

File是專門用來管理磁碟檔案與目錄的,它不負責資料的輸入輸出。Java.io.File是Java.lang.Object的子類,是檔案和目錄路徑名的抽象表示

簡單來說就是File可以代表磁碟下的一個檔案,也可以程式碼磁碟目錄下的一個檔案集。我們可以使用File拿到這個檔案或者檔案集的引用,來對這個檔案或者檔案集進行操作。

3.1 IO流(Input Output)

IO流技術主要的作用是解決裝置與裝置之間的資料傳輸問題,比如:硬碟的資料--讀取到-->記憶體中 記憶體的資料--讀取到-->硬碟中 鍵盤上的資料--讀取到-->記憶體中

3.2 File類的建構函式(方法)

File(String pathname):指定檔案或者資料夾的路徑來建立一個File檔案;
File(File parent, String child):根據parent抽象路徑和child路徑名字串,建立一個新的File例項;
package com.dhb.file;

import java.io.File;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:/a.txt");//指定路徑    [建構函式]
        file.createNewFile();//建立檔案(空檔案)    [方法]

        File files = new File("F:\\","b.txt");//第一個引數是路徑,第二個引數是要建立檔案的檔名    [建構函式]
        files.createNewFile();//建立檔案(空檔案)    [方法]
    }
}

4. java中帶引數的try(){}語法含義是什麼?

帶資源的try語句(try-with-resource)的最簡形式為:

try(Resource res = xxx)//可指定多個資源
{
     work with res
}        

try塊退出時,會自動呼叫res.close()方法,關閉資源。

5. Java 中json和gson

JSON是javascript物件的一種形態,是一種輕量級的資料交換格式。一般用來在Java EE後臺服務和Android或者IoS、H5之間進行通訊的一種資料傳遞的格式。

而Gson是谷歌推出的一個用於生成和解析JSON資料格式的工具;

1.Gson的基本用法

Gson提供了fromJson() 和toJson() 兩個直接用於解析和生成的方法,前者實現反序列化,後者實現了序列化;同時每個方法都提供了過載方法

在使用gson之前需要先匯入依賴包,在這裡我使用的是2.8.0版本的gson jar包.

一方包:當前⼯工程中的各模組的相互依賴的包
二方包:公司內部的依賴庫,一般指公司內部的其他專案釋出的jar包
三方包:公司之外的開源庫,比如apache、alibaba、google等釋出的包

常見的JSON庫
Gson Google公司開源 地址:https://github.com/google/gson
FastJson(專案選用) 阿⾥裡里巴巴開源 地址:https://github.com/alibaba/fastjson
還有 Jackson、Json-lib等很多

GSON使用程式碼

//json字串串轉成物件
Gson gson=new Gson();
Map<String,Object> map = gson.fromJson(str,Map.class);

6.決Java工程URL路徑中含有中文的情況

這其實是編碼轉換的問題。當我們使用ClassLoader的getResource方法獲取路徑時,獲取到的路徑被URLEncoder.encode(path,"utf-8")編碼了,當路徑中存在中文和空格時,他會對這些字元進行轉換,這樣,得到的往往不是我們想要的真實路徑,所以我們可以呼叫URLDecoder.decode()方法進行解碼,以便得到原始的中文及空格路徑。

Java程式碼 :
String packagePath = url.getPath().replaceAll("%20","");//解決路徑中含有空格的情況
packagePath = java.net.URLDecoder.decode(packagePath,"utf-8"); //解決路徑包含中文的情況

7. java做開發專案時的包的作用(dao,model,service,impl,util,pojo)

app包:

main函式入口

util包:

通常都是工具類,如字串處理、日期處理等,(建立資料庫之間的連線)

model包

存放我們的實體類,與資料庫中的屬性值基本保持一致

dao包

資料訪問層,主要針對於資料表的操作,可以理解為一張資料表,就有一個Dao與之對應,與資料庫的操作,增刪改查等方法

service包

供外部呼叫,等於對dao,model等進百行了包裝

impl包

定義介面

8. java-包名規則

個人:

indi:多人完成,版權屬於發起者

 1 | 包名為indi.發起者名.專案名.模組名*.*.\*

pers :獨自完成,公開,版權主要屬於個人。

 1 | 包名為pers.個人名.專案名.模組名*.*.*

priv : 獨自完成,非公開,版權屬於個人。

 1 | 包名為priv.個人名.專案名.模組名*.*.* 

團隊:

team:團隊專案指由團隊發起,並由該團隊開發的專案,版權屬於該團隊所有。

 1 | 包名為team.團隊名.專案名.模組名*.*.* 

公司:

com:由公司發起,版權由專案發起的公司所有。

 1 | 包名為com.公司名.專案名.模組名*.*.* 

示例

A、以功能模組來分層定義

com.xxx.user.action        com.xxx.menu.action
com.xxx.user.service       com.xxx.menu.service