引言: 致學者:不論你在什么時候開始,重要的是開始之后請不要停止。
如果傳送失效:2365217564
微雲學習地址:https://share.weiyun.com/5mokPqU
網盤學習地址:https://pan.baidu.com/s/1CTx5SqUeM-ZKtDYLeovODQ 提取碼:iclq
1. 簡述Java的基本歷史
java起源於SUN公司的一個GREEN的項目,其原先目的是:為家用消費電子產品發送一個信息的分布式代碼系統,通過發送信息控制電視機、冰箱等
1. 簡單寫出Java特點,寫出5個以上,越多越好
簡單的、面向對象的、分布式的、安全的、穩定的、與平台無關的、可解釋的、多線的、動態的語言。
1. 什么是Java?
JAVA:一種編程語言
一種開發環境
一種應用環境
一種部署環境
1. 請寫出Java的版本分類,以及每種版本的應用方向
三種版本:
JME:是面向內存有限的移動終端. 為消費性產品設計的;
JSE: 是SUN公司針對桌面開發和低端商務計算方案開發的版本。為筆記本電腦、PC機設計的;
JEE: 是一種利用JAVA 2平台來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構。 為企業級的、服務器端的高端應用而設計的;
1. 描述Java技術的主要特性
java虛擬機
垃圾回收
代碼安全性
1. 描述 Java虛擬機的功能
(1)通過 ClassLoader 尋找和裝載 class 文件
(2)解釋字節碼成為指令並執行,提供 class 文件的運行環境
(3)進行運行期間垃圾回收
(4)提供與硬件交互的平台
1. 簡述Java代碼安全性
(1)編譯時的錯誤檢驗
(2)類裝載檢查,把本機上的類和網絡資源類相分離,在調入類的時候進行檢查,因而可以限制任何“特洛伊木馬“的應用
(3)字節碼校驗
(4)沙箱機制,限定訪問權限
1. 描述Java垃圾回收機制
Java 編程語言解除了程序員釋放內存的責任。它可提供一種系統級線程以跟蹤每一次內存的分配情況。在 Java 虛擬機的空閑周期,垃圾收集線程檢查並釋放那些可被釋放的內存。垃圾收集在 Java 技術程序的生命周期中自動進行,它解除了釋放內存的要求,這樣能夠有效避免內存漏洞和內存泄露(內存泄露就是程序運行期間,所占用的內存一直往上漲, 很容易造成系統資源耗盡而降低性能或崩潰 。
垃圾回收有以下特點:
(1)垃圾回收是一個自動的系統行為,程序員不能控制垃圾回收的功能和行為。
(2)有一些跟垃圾回收相關的方法,比如:System.gc( ) ,調用這些方法,僅僅是在通知垃圾回收程序,至於垃圾回收程序運不運行,什么時候運行,都是無法控制的。
(3)程序員可以通過設置對象為 null,來標示某個對象不再被需要了, 這只是表示這個對象可以被回收了,並不是馬上被回收。
1. 簡述Java代碼的運行過程
(1)加載代碼 通過類裝載器裝載CLASS文件
(2)校驗代碼 由字節碼校驗
(3)執行代碼 由解釋器將字節碼轉換成機器碼
1. 簡述如何搭建Java開發環境
首先下載安裝JDK 然后配置環境
(1)配置PATH,
(2)配置CLASSPATH
(3)配置JAVA_HOME
1. 簡述classpath,path,JAVA_HOME的意義和配置方法
path 操作系統運行環境的路徑
classpath JAVA運行應用程序時所需要的類包的路徑
JAVA_HOME 供需要運行JAVA的程序使用
1. 請描述:一個完整的Java文件的代碼分幾個部分,每部分都起什么作用,大致的寫法
package 當前類所在位置
import 當前類運行時所需要的包或類
public class 類名 {
屬性定義;
方法定義:
構造方法定義;
public static void main(String args []) 例外{ 程序入口
語句;
}
}
//注釋
1. Java代碼的注釋有幾種?分別舉例說明
(1) // 單行注解
(2) /* */ 塊注釋
(3) /* *
* 文檔注釋
*/
1. 什么是Java代碼的語句,什么是Java代碼的塊,舉例說明
語句 是一行以分號終止的代碼,例:int a;
塊 是以{ }為邊界的一些語句的集合 例:public void tt( ){}
1. 什么是標示符?
標識符:是賦予變量、類、方法的名稱。
1. 標示符定義的規則?
1. 首字母只能以字母、下划線、$開頭,其后可以跟字母’下划線、$和數字配置CLASSPATH
2. 首字母小寫中間用大寫字母隔開
3. 標識符具有一定的含義
2. 什么是關鍵字?
關鍵字就是編程語言與機器語言的編碼約定
1. true、false、null、sizeof、goto、const那些是Java關鍵字
true 、false 、null 為JAVA的關鍵字
2. Java的基本數據類型有幾種?分別是?
short int long boolean float double char byte
1. 請寫出每種基本類型的默認值?取值范圍?分別給出一個定義的例子
默認值 取值范圍 示例
字節型 : 0 -2^7—-2^7-1 byte b=10;
字符型 : ‘ \u0000′ 0—-2^16-1 char c=’c’ ;
short : 0 -2^15—-2^15-1 short s=10;
int : 0 -2^31—-2^31-1 int i=10;
long : 0 -2^63—-2^63-1 long o=10L;
float : 0.0f -2^31—-2^31-1 float f=10.0F
double : 0.0d -2^63—-2^63-1 double d=10.0;
boolean: false true\false boolean flag=true;
1. 在基本類型中,如果不明確指定,整數型的默認是什么類型?帶小數的默認是什么類型?
整數類型 默認為 int
帶小數的默認為 double
1. 如何定義float類型和long型
float f = 1.2f
long l = 1.2L
1. 什么是變量?
變量是用來引用一塊內存區域或一個值,用標識符來表示,可以通過操作變量來操作變量所對應的內存區域或值塊的值。
1. 變量的定義規則?
1. 以字母、$、下划線開頭,其后可以跟字母、下划線、$和數字;
2. 首字母小寫,中間單詞用大寫字母隔開;
3. 名稱具有一定含義;
1. 請寫出Java編碼約定中對下列部分的要求:類、屬性、方法、包、文件名、變量、常量、控制結構、語句行、注釋
類: 一個類文件中類名要和文件名相同,類名一定要以大寫字母開頭,單詞之間用大寫字母分隔
屬性: 屬性名首字母小寫,中間用大寫字母隔開。
方法: 方法名首字母小寫,中間用大寫字母隔開。
包: 引用包必須寫在類文件的開頭,有且只能有一個包,全部用小寫字母。
控制結構:當語句是控制結構的一部分時,即使是單個語句,也應使用大括號將語句封閉。
語句行:每行只寫一個語句,並使用四個縮進的空格,使代碼更易讀,注意用分號結束。
注釋: 用注釋來說明那些不明顯代碼的段落。
常量: 常量名一般用大寫字母,單詞之間用下划線分隔,一旦賦值不允許修改。
1. 什么是Javadoc?
按照一定格式生成程序的文檔的工具。
1. 什么是引用類型?
用戶定義類型, 它可引用類和數組。
除去基本數據類型的其他類型都是引用數據類型。
1. 什么是按值傳遞?什么是按引用傳遞?
按值傳遞:就是將該值的副本傳過去(基本數據類型+String類型的傳遞,就是按值傳遞)
按引用傳遞:就是將值的內存地址傳過去(除基本數據類型+String以外類型的傳遞,就是引用傳遞)
1. 如何創建一個新對象?如何使用對象中的屬性和方法?
使用new 關鍵字來創建一個新的對象;
通過對象的實例用”.“(點)來調用對象中的屬性和方法;
靜態的方法和屬性,也可以直接用類名”.“(點)來調用;
1. 簡述new關鍵字所做的工作
new 創建一個對象,並為對象分配一塊內存。
1. 簡述”=” 和”= =”的功能和區別
“=” 賦值,
“= =”當比較基本數據類型的時候,判斷前后兩個值是否相等;
當比較引用數據類型的時候,判斷= =前后兩個值的內存地址是否相等;
區別:
= :為賦值表達式
= = :為邏輯表達式
1. 什么是實例變量?什么是局部變量?什么是類變量?什么是final變量?
實例變量: 類中定義的變量,即類成員變量,如果沒有初始化,會有默認值;
局部變量: 在方法中定義的變量,必須初始化;
類變量: 用static修飾的屬性;
final變量: 用final 修飾的變量,
1. 簡述上述各種變量的定義規則和使用規則?
實例變量: 不需要static關鍵字來聲明,需要類的實例(對象)調用(用”.“);
類變量: 用static修飾,可以用類名調用,也可以用類的實例調用;
局部變量: 在方法內任意定義變量即為局部變量;
final變量: 一旦賦值,不可以再修改的變量;
final屬性只允許賦值一次,且只能通過構造方法賦值,定義后也就是一個常量;
final修飾的變量,只允許賦值一次
1. a++和++a的區別?
a++ : 先使用,后加1
++a : 先加1,后使用
1. 請描述instanceof、?:、&、&&各自的功能
instanceof :用來判斷某個實例變量是否屬於某種類的類型。
? : 三目運算符:
表達式1?表達式2:表達式3
如果表達式1為true,執行表達式2,否則執行表達式3
&: 位運算:按位與 |
&&: 邏輯運算:邏輯與
1. 請描述>>、<<、>>>的功能
10>>4 :算術或符號右移位運算符
<< :算術或符號左移位運算符
>>> :邏輯或無符號右移位運算符
1. 請描述什么是強制類型轉換?什么是自動類型轉換?什么是向上造型?並分別舉例說明
強制類型轉換:在一個類型前面加( ),來強制轉換
long l = 9L;
int i = (int)l;
自動類型轉換:
int i = 5;
String str = “”+i;
向上造型:把范圍小的造型為范圍大的類型:
int i = 2;
long l = i;
1. 請寫出完整的if條件控制語句的結構
if(布爾表達式){
語句
}else{
語句
}
1. 請寫出完整的switch語句的結構
switch(字符){
case 字符: 語句
break;
case 字符: 語句
break;
default:語句
}
1. 請寫出完整的for語句的結構
for(初始語句;條件語句;步長){
}
1. 請寫出完整的while語句的結構
while(boolean語句){
}
1. 請寫出完整的do while語句的結構
do{
}while(boolean語句);
1. 請描述break 和 continue的功能和用法
break:終止(跳出)最近的循環
continue:跳出本次循環,執行下一次循環
1. 定義一個一維的int數組,先創建它,並初始化它,給它賦值,然后輸出其中的一個值
public class Arr{
public static void main(String args[]){
int a[] = new int[5];
a={1,2,3,4,5};//錯誤 , 只能在初始化時這樣做
a[0]=1;
a[1]=2;
System.out.println(a[0]);
}
}
1. 定義一個一維的A類型數組,直接定義並賦值,然后輸出其中的一個值
public class A{
public static int i;
public static void main(String args[]){
A aa = new A( );
A bb = new A( );
A a[] = {aa,bb};
a[0].i=2;
System.out.println(a[0]);
}
}
1. 把上面的數組改成2維的數組
public class A{
public static int i;
public static void main(String args[]){
A a[ ][ ] = new A[5][5];
a[0][0].i=2;
System.out.println(a[0][0]);
}
}
1. 舉例說明數組拷貝方法的使用:arraycopy方法
public class A{
public static void main(String args[]){
int a[] = new int[5];
int b[] = new int[5];
System.arraycopy(a[5],0,b[5],0,a.length)
System.out.println(b[0][0]);
}
}
1. 什么是構造和析構方法?功能是?
構造方法:每個類至少有一個構造方法,類初始化時調用的方法
1.方法名和類名相同
2.無返回值類型
格式:訪問權限 類名(參數列表) {};
1.自己定義構造后,就沒有默認的構造方法
2.無構造方法時,默認為空參的構造方法(無參數,方法體為空)
析構方法:finalize
類銷毀時,自動調用方法
當對象在內存中被刪除時,自動調用該方法
在此方法中可以寫回收對象內部的動態空間的代碼
1. 簡述Java的訪問修飾符類型?分別有什么功能?
public 公開的,任何一個類都有可以訪問
protected 同包同類,只可被它的子類訪問
default 只能被同一個包中類訪問
private 私有的,只能在本類中被訪問
1. 分別說明:在類上、在屬性上、在方法上能使用哪些訪問修飾符
在類上:public default final
在方法上: 訪問權限:public protected private default
方法修飾符:static
final
返回類型:void
在屬性上:public protected private default
static
final
1. 簡述什么是包?包的功能
包:對所定義的多個JAVA類進行分組,將多個功能相關的類定義到一個包(文件)中。
功能:1.易於查找和使用適當的類
2.包不止包含類和接口,還可以包含其它包,形成層次的包空間
3.有助於避免命名沖突
1. 請寫出5個以上的JDK中的包,以及他們的基本功能
java.awt: 包含構成抽象窗口工具集的多個類,用來構建和管理應用程序的圖形用戶界面
java.lang: 提供java編成語言的程序設計的基礎類
java.io: 包含提供多種輸出輸入功能的類,
java.net: 包含執行與網絡有關的類,如URL,SCOKET,SEVERSOCKET,
java.applet: 包含java小應用程序的類
java.util: 包含一些實用性的類
1. 什么是包裝類?Java中都有哪些包裝類
在JDK中針對各種基本類型分別定義相應的引用類型 ————–稱為封裝類
Boolean Byte Short Integer Long Float Double Character
1. OOP(面向對象)語言的三大特征是?
封裝性,繼承性,多態性
1. 分別表述類的三大特性及其他們的功能
封裝:隱藏類的實現細節、迫使用戶去使用一個接口去訪問數據、使代碼更好維護
繼承:子類可以直接繼承使用父類的方法,程序員只需要做的是定義額外特征或規定將適用的變化
多態性:同一個行為具有多個不同表現形式或形態的能力
1. 如何實現繼承?繼承的規則?
public class A extends B{
}
1. 單繼承性
2. 構造方法不能繼承
3. super引用父類,調用父類的屬性,方法
4. 當子類中出現與父類的方法名,返回類型,參數列表相同的方法時要覆蓋此方法
1. 簡述this和super的功能和用法
this :
1. 能訪問除構造方法以外所有的屬性、方法,通過this. 來調用方法和屬性
2. 不可以在靜態方法中使用,
3. 在調用其它構造方法時,必須放在該構造方法的第一行
4. 在構造方法中使用this(參數列表),相當於調用本類的其它構造方法,它必須作為構造方法的第一句
super :訪問父類
1. super. 點取父類中被子類隱藏的方法和屬性,
2. 通過 super(參數列表) 來調用父類的屬性和方法,在調用父類的構造方法時必須放在子類構造方法里的第一行;
1. 如何確定在多態的調用中,究竟是調用的那個方法?
new的是哪一個類就是調用的哪個類的方法。
1. 請描述方法定義的完整的語法結構
權限修飾符 修飾符 返回類型 方法名(參數) 例外{
方法體;
}
1. 什么是重載?
在一個類中出現方法名相同,但參數列表不同時,這種情況就是重載。
1. 簡述重載的規則
1. 方法名稱必須相同;
2. 參數列表必須不同(個數不同,或類型不同,或參數排列順序不同);
3. 與返回類型無關;
2. 什么是方法的覆蓋?什么情況下出現?
方法覆蓋:
子類可以修改從父類繼承過來的行為,也就是說子類可以創建一個與父類方法有不同功能的方法,但具有相同的:名稱、返回類型名和參數列表。
在父子類的情況下出現時。
1. 方法覆蓋的規則?
1. 方法名要和父類中被覆蓋的方法名相同,返回類型相同,參數列表相同。
2. 訪問權限要大於等於被覆蓋方法的權限。
3. 例外列表要小於等於被覆蓋方法的例外列表。
1. static修飾符的功能是?可以用在什么地方?怎么訪問?
static 修飾符功能:
1. 共用一塊內存區域,也就是用static修飾的變量或成員方法對所有類的實例都是相同的
2. 靜態成員方法和靜態變量的優點在於他們能在沒有創建類的任何一個實例的情況下被引用。
3. 可以用在方法或屬性上
訪問方式:
1. 直接使用類名調用
2. new 一個實例,用實例調用
1. static的基本規則
1. 類中的靜態方法只可以調用靜態的屬性和方法,不允許調用非靜態的屬性和方法。
2. 靜態變量為類變量,可以用類名直接調用靜態的屬性和方法。
3. 靜態方法中不允許出現this和super
4. 構造方法不允許聲明static
5. 非靜態變量為實例變量,通過實例調用
6. 靜態方法不能被非靜態方法覆蓋
1. final修飾符的功能是?可以用在什么地方?
功能:final標記所有通用的功能,不能隨意更改
可以用在類、屬性和方法上
1. final的基本規則
1. final修飾的類不能被繼承
2. final修飾的成員變量只允許賦值一次,且只能通過構造方法里賦值。
3. final修飾的局部變量即為常量,只能賦值一次。
4. final修飾的方法不允許被子類覆蓋。
1. 什么是抽象方法,什么是抽象類
用abstract修飾的方法,只有方法的聲明,而沒有方法的實現,就叫抽象方法。
用abstract修飾的類,就叫抽象類。
1. 抽象類的規則
1. 抽象類內部可以沒有抽象方法
2. 必須用abstract修飾
3. 不能夠直接使用抽象類,必須通過子類繼承並且實現
4. 抽象方法不允許被private修飾
1. 什么情況下使用抽象類
1. 當一個類的一個或多個方法是抽象方法時;
2. 當類是一個抽象類的子類,並且不能為任何抽象方法提供任何實現細節或方法體時;
3. 當一個類實現一個接口,並且不能為任何抽象方法提供實現細節或方法體時;
1. equals方法和”= =”的功能和區別
功能:判斷對象是否相等
區別:
equals方法比較的是對象的值
= =:比較的是對象值的內存地址,對基本數據類型來說= =比較的是數值
1. toString方法的功能和基本寫法
返回一個String類型
public String toString(){
return “”;
}
1. String的方法的功能和基本使用方法,請描述5個以上
substring(參數1,參數2); 功能:取字符串中參數1到參數2的的所有字符; “String”.subString(0,1);
replace(參數1,參數2); 功能:用參數1中的值替換字符串中所有參數2的值 “String”.replace(ing,tt);
equals( ); 功能:判斷兩個字符串是否相等 “String”.equals(“tt”);
trim( ); 功能:去掉字符串兩邊的空格 “String”.trim();
indexof( ); 功能:查找字符串中參數所在位置,並返回字符串第一個出該參數的下標
“String”.indexOf(“ing”);
split( ); 功能:根據參數分割該字符串 “String”.split(“-”);
1. 為什么使用StringBuffer類?有什么功能和優點?
–只創建一個對象
–StringBuffer 對象的內容是可以被修改的
–除了字符的長度之外,還有容量的概念
–通過動態改變容量的大小,加速字符管理
1. 舉例說明如何使用StringBuffer
StringBuffer sb = new StringBuffer();
sb.append(“aaa”);
1. 如何使用Java讀寫系統屬性?
讀:
Properties props = System.getProperties();
Enumeration prop_names = props.propertyNames();
while (prop_names.hasMoreElements()) {
String prop_name = (String) prop_names.nextElement();
String property = props.getProperty(prop_name);
System.out.println(“Property ‘” + prop_name + “‘ is ‘”+ property + “‘”);
}
寫:
System.setProperties(props);
1. 簡述properties文件的結構和基本用法
結構:擴展名為properties的文件,內容為key、value的映射,例如”a=2″
用法:
public class Test {
public static void main(String args[]) {
try {
String name = “test.properties”;
InputStream in = new BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
System.out.println(“a的值==” + p.getProperty(“a”));
} catch (Exception err) {
err.printStackTrace();
}
}
}
1. 什么是接口?接口的定義規則?
接口是抽象方法和常量值的定義的集合。從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現。
public interface Tt {
public void outPut( );
public int tt( );
}
1. 接口的作用?為什么使用接口?
多重繼承
封裝、隔離
功能,實現的分離
多態
便於后期維護
接口是可插入性的保證。
1. 什么是多重接口
就是一個類實現多個接口
1. 描述接口的基本思想?
封裝 隔離
接口及相關機制的最基本作用在於:通過接口可以實現不相關類的相同行為,
而不需考慮這些類之間的層次關系。
根據接口可以了解對象的交互界面,而不需了解對象所屬的類。
面向對象程序設計講究”提高內聚,降低耦合”。
1. 如何在代碼中使用接口?
public class MyCast implements Tt{
public void outPut( ){}
public int tt( ){
return 0;
}
}
1. 舉例說明如何把接口當作類型使用
public interface Animal(){
public void tt( );
}
public class Dog implements Animal{
public void tt ( ){}
}
Animal ani = new Dog();
1. 如何選擇接口和抽象類?為什么?
優先選用接口,盡量少用抽象類
在下列情況下選擇抽象類:需要定義子類的行為,又要為子類提供共性的功能。
1. 什么是異常,異常的分類?
程序中導致程序中斷的一些情況叫做異常,一般程序員可以處理。
異常分為運行時異常和非運行時異常(一般異常)
運行時異常是指因設計或實現方式不當導致的問題。也可以說,是程序員的原因導致的,本來可以避免發生的情況。例如:BufferOverflowException, ClassCastException,IndexOutOfBoundsException,ArithmeticException。出現這些異常的代碼不需要try塊包圍。
非運行時異常是指除運行時異常以外所有的異常,出現這些異常的代碼必須用try塊包圍。例如:FileNotFoundException,EOFException,