java基礎習題
這道題的答案是C。
double[] num1; //定義一個double類型的數組num1
double num3=2.0; //定義一個double類型的變數並賦值為2.0
int num2=5; //定義一個int類型的冰涼num2,並賦值為5
num1=new double[num2+1];
//給double類型的數組num1賦值,並初始化為5+1個大小, num2=5,所以是5+1
num1[num2]=num3;
//上面這句翻譯過來就是:數組num1[5]=2.0 。 由於數組下標從0開始,所以下標為5的元素是最後一個元素。 所以答案是C
B. java基礎面試題有哪些
下面是10道java基礎面試題,後附答案
1.什麼是 Java 虛擬機?為什麼 Java 被稱作是「平台無關的編程語言」?
Java 虛擬機是一個可以執行 Java 位元組碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執行的位元組碼文件。
Java 被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java 虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。
2.「static」關鍵字是什麼意思?Java 中是否可以覆蓋(override)一個 private 或者是static 的方法?
「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。
Java 中 static 方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而 static 方法是編譯時靜態綁定的。static 方法跟類的任何實例都不相關,所以概念上不適用。
3.JDK 和 JRE 的區別是什麼?
Java 運行時環境(JRE)是將要執行 Java 程序的 Java 虛擬機。它同時也包含了執行 applet 需要的瀏覽器插件。Java 開發工具包 (JDK)是完整的 Java 軟體開發包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調試器),可以讓開發者開發、編譯、執行 Java 應用程序。
4.是否可以在 static 環境中訪問非 static 變數?
static 變數在 Java 中是屬於類的,它在所有的實例中的值是一樣的。當類被 Java 虛擬機載入的時候,會對 static 變數進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。
5.Java 支持的數據類型有哪些?什麼是自動拆裝箱?
Java 語言支持的 8 中基本數據類型是:
byte
short
int
long
float
double
boolean
char
自動裝箱是 Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:把 int 轉化成 Integer,double 轉化成 double,等等。反之就是自動拆箱。
6.Java 支持多繼承么?
不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個介面。
7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是復制構造函數?
當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提供構造函數的情況下,Java 編譯器會為這個類創建一個默認的構造函數。
Java 中構造函數重載和方法重載很相似。可以為一個類創建多個構造函數。每一個構造函數必須有它自己唯一的參數列表。
Java 不支持像 C++中那樣的復制構造函數,這個不同點是因為如果你不自己寫構造函數的情況下,Java 不會創建默認的復制構造函數。
8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什麼意思?
Java 中的方法重載發生在同一個類裡面兩個或者是多個方法的方法名相同但是參數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方法的訪問。
9.介面和抽象類的區別是什麼?
Java 提供和支持創建抽象類和介面。它們的實現有共同點,不同點在於:
介面中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
類可以實現很多個介面,但是只能繼承一個抽象類
類如果要實現一個介面,它必須要實現介面聲明的所有方法。但是,類可以不實現抽象類聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
抽象類可以在不提供介面方法實現的情況下實現介面。
Java 介面中聲明的變數默認都是 final 的。抽象類可以包含非 final 的變數。
Java 介面中的成員函數默認是 public 的。抽象類的成員函數可以是 private, protected 或者是 public。
介面是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含 main 方法的話是可以被調用的。
10.什麼是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
對象被引用傳遞,意味著傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。
最後祝你面試順利!
C. 四道Java基礎題,你能做對幾道
符的使用
首先看一段比較有意思的代碼
[java] view plain
Integer a = 1000,b=1000;
Integer c = 100,d=100; public void mRun(final String name){
new Runnable() {
public void run() {
System.out.println(name);
}
};
}
System.out.println(a==b);
System.out.println(c==d);
如果這道題你能得出正確答案,並能了解其中的原理的話。說明你基礎還可以。如果你的答案 是 true 和true的話,你的基礎就有所欠缺了。
首先公布下答案, 運行代碼,我們會得到 false true。我們知道==比較的是兩個對象的引用,這里的abcd都是新建出來的對象,按理說都應該輸入false才對。這就是這道題的有趣之處,無論是面試題還是論壇討論區,這道題的出場率都很高。原理其實很簡單,我們去看下Integer.java這個類就瞭然了。
[java] view plain
public static Integer valueOf(int i) {
return i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i + 128];
}
/**
* A cache of instances used by {@link Integer#valueOf(int)} and auto-boxing
*/
private static final Integer[] SMALL_VALUES = new Integer[256];
static {
for (int i = -128; i < 128; i++) {
SMALL_VALUES[i + 128] = new Integer(i);
}
}
當我們聲明一個Integer c = 100;的時候。此時會進行自動裝箱操作,簡單點說,也就是把基本數據類型轉換成Integer對象,而轉換成Integer對象正是調用的valueOf方法,可以看到,Integer中把-128-127 緩存了下來。官方解釋是小的數字使用的頻率比較高,所以為了優化性能,把這之間的數緩存了下來。這就是為什麼這道題的答案回事false和ture了。當聲明的Integer對象的值在-128-127之間的時候,引用的是同一個對象,所以結果是true。
2String
接著看代碼
[java] view plain
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
大家又來猜一猜這道題的答案是什麼?
按照==的語法來看, 首先s1、s2、s3是三個不同的對象,常理來說,輸出都會是false。然而程序的運行結果確實true、false。第二個輸出false可以理解,第一個輸出true就又讓人費解了。我們知道一些基本類型的變數和對象的引用變數都是在函數的棧內存中分配,而堆內存中則存放new 出來的對象和數組。然而除此之外還有一塊區域叫做常量池。像我們通常想String s1 = "abc"; 這樣申明的字元串對象,其值就是存儲在常量池中。當我們創建String s1 = "abc"這樣一個對象之後,"abc"就存儲到了常量池(也可叫做字元串池)中,當我們創建引用String s2 = "abc" 的時候,Java底層會優先在常量池中查找是否存在"abc",如果存在則讓s2指向這個值,不會重新創建,如果常量池中沒有則創建並添加的池中。這就是為什麼答案是true 和false的原因。
3final關鍵字
還是來看一段代碼
[java] view plain
public void mRun(final String name){
new Runnable() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(name);
}
}.start();
}
這種代碼相信大家寫過很多,當內部類訪問局部變數的時候,需要在局部變數前加final修飾符,不然編譯器就會報錯。通常我們也是這么乾的。好的,第二個問題來了,為什麼要加final修飾符?相信大多數小夥伴都沒有思考過這個問題,但凡使用的時候,直接加上就得了,從來沒去深究過其中的原理。這對於一個優秀的程序員來說是不可取,我們不僅要知其然還要知其所以然。
現在我們來分析一下,為什麼要加final關鍵字。首先內部類的生命周期是成員級別的,而局部變數的生命周期實在方法體之類。也就是說會出現這樣一種情況,當mRun方法執行,new 的線程運行,新線程裡面會睡一秒。主線程會繼續執行,mRun執行完畢,name屬性生命周期結束。1秒之後,Syetem.out.printh(name)執行。然而此時name已經壽終正寢,不在內存中了。Java就是為了杜絕這種錯誤,嚴格要求內部類中方位局部變數,必須使用final關鍵字修飾。局部變數被final修飾之後,此時會在內存中保有一份局部變得的復製品,當內部類訪問的時候其實訪問的是這個復製品。這就好像是把局部變數的生命周期變長了。說到底還是Java工程師提前把這個坑給我們填了,不然不知道又會有多少小夥伴會為了內部類局部變數而發愁了。
4Integer與int那些事
看下面代碼
[java] view plain
Integer a = new Integer(1000);
int b = 1000;
Integer c = new Integer(10);
Integer d = new Integer(10);
System.out.println(a == b);
System.out.println(c == d);
這道題是繼第一題的後續,如果這道題你能很快速的得出答案,那麼恭喜你,==比較符你就算掌握的比較透徹了。
---------------我是華麗分割線-------------
正確答案: true 、false
看到這個答案很多小夥伴又會不解,先來說下第二個,按第一題來說Integer不是把-128-127緩存起來了嗎?這不是應該是true嘛,但是你仔細看,這里的Integer是我們自己new出來的,並不是用的緩存,所以結果是false。 現在來看第一個為啥又是true了呢? 首先這里的值為1000,肯定和我們所知的Integer緩存沒有關系。既然和緩存沒有關系,a是新new出來的對象,按理說輸入應該是false才對。但是注意b這里是int類型。當int和Integer進行==比較的時候,Java會把Integer進行自動拆箱,也就是把Integer轉成int類型,所以這里進行比較的是int類型的值,所以結果即為true。
學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:232300090【長按復制】 我們一起學Java!
D. 求Java基礎,練習題。
選擇題 (25道)
1. 下列選項中,不屬於Java語言特點的一項是( C )。
A:分布式 B:安全性 C:編譯執行 D:面向對象
2. Java語言的特點與 C/C+ +語言的比較中說法錯誤的是:( D )
A:簡單性Java繼承了 C/C+ +的語法 ,丟棄了其中不常用又容易引起混淆的功能。
B:Java是一種純面向對象的語言 ,具有封裝、繼承 ( Inheritance)和多態( Polymorphism)的特點。
C:Java應用程序可憑借URL打開並訪問網路上的對象。
D:解釋型Java寫成的源代碼需要被編譯成高階的位元組碼 ,它們與機器架構有關。
3. 閱讀下列代碼,選出該代碼段正確的文件名( C )。
class A{
void method1(){
System.out.println("Method1 in class A");
}
}
public class B{
void method2(){
System.out.println("Method2 in class B");
}
public static void main(String[] args){
System.out.println("main() in class B");
}
}
A: A.java B:A.class C: B.java D: B.class
4. 如果一個類的文件名為Student.java,但是類的代碼為:
public class Student {
public static void main(String[] args) {
System.out.println(8>>2);
}}
那麼下列說法正確的是:( B )
A:程序運行結果為8; B:程序運行結果為2;
C:程序運行結果為0; D:程序編譯錯誤,不能運行;
5. 符合對象和類的關系的是( D )。
A:教師和學生 B:書和房子
C:狗和貓 D:飛機和交通工具
6. 關於垃圾回收機制描述不正確的是( B )
A:垃圾回收機制不須通過程序員調用相應方法,也能自動啟動。
B:java程序員用System.gc()方法一定能進行垃圾回收;
C:垃圾回收機制屬於jvm自動操作,java程序員可以不進行垃圾回收操作。
D:垃圾回收機制並不是由操作系統自動執行。
7. 編譯下面源程序會得到哪些文件( D )?
class A1{
}
class A2 exdends A1{
}
public class B{
public static void main(String[] args){
}
}
A: 只有B.class文件 B:只有A1.class和A2.class文件
C: 編譯不成功 D:A1.class、A2.class和B.class文件
8. 下列關於基本數據類型的說法中,不正確的一項是( D )。
(A)boolean類型變數的值只能取真或假
(B)float是帶符號的32位浮點數
(C)double是帶符號的64位浮點數
(D)char是8位Unicode字元
9. 下列(D )是合法的標識符?
A:12class B:void C:-5 D:_blank
10. 在編寫Java程序時,如果不為類的成員變數定義初始值,Java會給出它們的默認值,下列說法中不正確的一個是( D )。
A:byte的默認值是0 B:boolean的默認值是false
C: char類型的默認值是』\0』 D: long類型的默認值是0.0L
11. 下列程序執行的結果是:( B )
public class News {
public static void main(String[] args) {
System.out.println(1+2+ "aa"+3);
}}
A: "12aa3" B: "3aa3 " C: "12aa" D: "aa3"
12. 表達式(12==0) && (1/0 < 1)的值為( B )。
A: true B: false C: 0 D: 運行時拋出異常
13. 下列循環體執行的次數是( C )。
int y=2, x=4;
while(--x != x/y){ }
A : 1 B: 2 C : 3 D : 4
14. 已知如下代碼:
switch(m){
case 0: System.out.println("Condition 0");
case 1: System.out.println("Condition 1");
case 2: System.out.println("Condition 2");
case 3: System.out.println("Condition 3");break;
default:System.out.println("Other Condition");
}
當m的值為( D )時,輸出「Condition 3」
(A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3
15. 下列語句輸出的結果是:( C )
public class X3 {
public static void main(String[] args) {
for(int i=0; i<10; i++){
if(i==5) break;
System.out.print(i);
}
}
}
A:編譯錯誤; B:1234;C:01234;D:12345;
16. 下列語句輸出的結果是:( D )
public class Lx1 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
switch(i){
case 0:System.out.print("B");
case 1:System.out.print("e");break;
case 2:System.out.print("g");
case 3:System.out.print("!");break;
case 4:System.out.print("!");break;
default:System.out.print("!");
}
}
}
}
A:Beg!!! B:Beeg! C:Beg! D:Beeg!!!
17. 下面foreach循環的程序輸出結果是( D )。
public class Lx1{
public static void main(String[] args) {
String s1[]={"歡迎您","3","G","同","學",};
Arrays.sort(s1);
for(String s0:s1)
System.out.print (s0);
}
}
A:歡迎您3G同學 B:3G歡迎您同學 C:同學歡迎您3G D:3G同學歡迎您
18. 閱讀以下程序,選擇正確的運行結果:( B )
public class Lx1 {
public static void main(String[] args) {
byte d[]="YOUIHE你我他".getBytes();
String s=new String(d,6,2);
System.out.println(s);
}
}
A:HE; B:你; C:我; D:他
19. 設有下列數組定義語句:
int a[][]= {{1, 2}, {3}};
則對此語句的敘述正確的是( D )。
A: 定義了一個名為a的一維數組 B: a數組 a[1][1]為0
C: a數組元素的下標為1~3 D: 數組中每個元素的類型都是整數
20. 下列程序輸出的結果是:( B )
public class Lx1 {
public static void main(String[] args) {
String a[][] ={{"","","",""},{""},{"",""}};
System.out.println(a[2].length);
}
}
A:1 B:2 C:3 D:4
21. 關於以下程序的說明,正確的是( C )
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(「x=」 + x);
8. }
9. static { x/=3;}
10. }
A、4行與9行不能通過編譯,因為缺少方法名和返回類型
B、9行不能通過編譯,因為只能有一個靜態初始化器
C、編譯通過,執行結果為:x=5
D、編譯通過,執行結果為:x=3
22. 給出下面代碼,關於該程序以下哪個說法是正確的?( C )
public class Person{
static int arr[] = new int[5];
public static void main(String a[]) {
for(int i=0;i
System.out.print(arr[0]);
}
}
A、編譯時將產生錯誤 B、編譯時正確,運行時將產生錯誤 C、輸出零 D、輸出空
23. 下面程序中類ClassDemo中定義了一個靜態變數sum,分析程序段的輸出結果。( C )
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);}
}
A: 0 B: 6 C: 11 D: 2
24. 下面關於方法的說法,不正確的是( C )。
A: Java中的構造方法名必須和類名相同
B: 方法體是對方法的實現,包括變數聲明和合法語句
C: 如果一個類定義了構造方法,也可以用該類的默認構造方法
D: 類的私有方法不能被其他類直接訪問
25. 在Java中下列說法正確的是( C )
A) 一個子類可以有多個父類,一個父類也可以有多個子類
B) 一個子類可以有多個父類,但一個父類只可以有一個子類
C) 一個子類可以有一個父類,但一個父類可以有多個子類
D) 上述說法都不對
E. java基礎習題里的復利計算公式
設每年購買為P,購買n年,利率為r,則第n年結束時,最後一年購買的P,變成了P(1+r)
倒數第二年:P(1+r)²,第一年 P(1+r)的n-1次方
這是個等比數列,等比數列求和總會吧?
Sn = a1 * (1-q的n次方) / (1-q)
這里q = 1+r
= P((1+r) + (1+r)²...+(1+r)的n-1次方) = P((1+r)^n-1) / (1+r -1) = P((1+r)^n-1)/r
F. 要JAVA基礎的一些練習題與參考答案
一、問答題
1、Java語言的數據類型有哪些?8
答:有byte(位元組型)、char(字元型)、boolean(布爾型)、short(短整型)、int(整型)、long(長整型)、
浮點型:float(單精度)、double(雙精度)。
2、寫出算術運算符、關系運算符、邏輯運算符各自包含的運算符,寫出條件運算符的形式,並簡述其執行過程。10
答:
算術運算符:++、--、+、-、*、/、%
關系運算符:!=、>=、<=、>、<、==
邏輯運算符:!(邏輯非)、&&(邏輯與)、||(邏輯或)
條件運算符的形式:表達式1?表達式2:表達式3;3、數組有怎樣的特徵?寫出一維數組兩種初始化的語法格式(可使用具體的實例)。10
答:數組特徵:數組有若干個元素;
各元素有相同的數據類型;
按一定的順序排列;
一維數組兩種初始化的語法格式:
int a[]=new int[2];
a[0]=1;
a[1]=2;
或int a[];
a[]=new int[2];
a[0]=1;
a[1]=2;int a[]={1,2};
4、比較順序表、棧、隊列的異同點,分別寫出冒泡法排序的主要特點。12
答:都運用數組的知識,都運用了方法調用;
棧的特點是:
冒泡法排序的主要特點:
經過多輪循環,每一輪循環從最後一個元素依次與前面的元素比較大小,最終找到的最小元素排在第一位,第一輪循環終止;再依次進行下一輪循環。
二、編程題
1、規定一個工人工作時間一月160小時,每小時工資5元,加班的話,每小時增加4元,請編程計算此工人一個月的工資,工作時間由鍵盤輸入。15
import jaimport java.io.*;
pubic class Qgrgz
{
public static void main(String[] args)throws IOException
{int x,result;<br> InputStreamReader ir;<br> BufferedReader in;<br> ir=new InputStreamReader(System.in);<br> in=new BufferedReader(ir);<br> System.out.println("Shurugongrengongzuoshijian:");<br> String s=in.readLine();<br> x=Integer.parseInt(s);<br> if(0<x&&x<=160)<br> result=x*5;<br> else<br> result=(160*5+(x-160)*9);<br> System.out.println("gongrenyuegongziwei:"+result);<br> }
}2、編程求解1—100中是7的倍數的數值的和。15
public class Qh
{
public static void main(String[] args)
{
int sum=0;
int i=1;
while(i<100)
{
if(i%7==0)
sum +=i;
i++;
}
System.out.println("sum="+sum);
}
}
3、輸入3名學生4門課程的成績,分別統計每個學生4門課程的平均成績。15
import java.io.*;
public class Pjf
{
public static void main(String[] args)throws IOException
{
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
for(int i=1;i<=3;i++)
{
double v=0,sum=0;
for(int j=1;j<=4;j++)
{
System.out.print("請輸入第"+i+"個學生第"+j+"科成績:");
String a=in.readLine();
int x=Integer.parseInt(a);
sum=sum+x;
}
v=sum/4;
System.out.println("總分是:"+sum);
System.out.println("平均分是:"+v);
}
}
}
4、運用方法調用求一維數組中的最大元素及下標,在main方法中輸入數組元素。15
import java.io.*;
public class Qszzdys
{ int a[]=new int[10];
public static void main(String[] args)throws IOException
{
int i;
Qszzdys b=new Qszzdys();
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
for(i=0;i<10;i++)
{
System.out.println("請輸入a["+i+"]:");
String s=in.readLine();
b.a[i]=Integer.parseInt(s);
}
b.d();
}
void d()
{
int max,x=0;
max=a[0];
for(int j=1;j<10;j++)
if(a[j]>max)
{
max=a[j];
x=j;
}
System.out.println("最大值是:"+max+";下標是:"+x);
}
}
5、運用選擇法對23,45,34,78,99,12,50,0這組數進行升序排列。(選做題,做了加分,沒做不減分)15
public class Paixu
{
int [] a;
int len;
void f(int maxSize)
{
a=new int[maxSize];
len=0;
}
void b(int value)
{
a[len]=value;
len++;
}
void display()
{
for(int i=0;i<len;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
}
void ff();
{
int out,in,min;
for(out=0;out<len-1;out++)
{
min=out;
for(in=out+1;in<len;in++)
if(a[in]<a[min])
min=in;
swap(out,min);
}
}
void swap(int one,int two)
{
int temp=a[one];
a[one]=a[two];
a[two]=temp;
}
public static void main(String[] args)
{
Paixu paixu=new Paixu();
int maxSize=100;
paixu.f(maxSize);
paixu.b(23);
paixu.b(45);
paixu.b(34);
paixu.b(78);
paixu.b(99);
paixu.b(12);
paixu.b(50);
paixu.b(0);
System.out.println("排序前:");
paixu.display();
paixu.ff();
System.out.println("排序後:");
paixu.display();
}
}
G. java基礎題目
/**
* Created by ${琳仔} on 2019/10/16.
*/
public class Person {
//身份證號碼
private String idCard;
//姓名
private String name;
//性別
private int sex;
//年齡
private int age;
//籍貫
private String nativePlace;
//住址
private String address;
/**
* 吃什麼食物
* @param food
*/
private void eating(String food){
System.out.println("吃了:"+food);
}
/**
* 購物
* @param goods
*/
private void shopping(String goods){
System.out.println("購物:"+goods);
}
/**
* 睡覺
* @param time
*/
private void sleeping(int time){
System.out.println("睡了:"+time);
}
/**
* 修改人的姓名
* @param aName
*/
private void setName(String aName){
this.name = aName;
System.out.println("修改姓名:"+aName);
}
/**
* 修改人的年齡
* @param aAge
*/
private void setAge(int aAge){
this.age = aAge;
System.out.println("修改年齡:"+aAge);
}
/**
* 列印人的所有信息
*/
public void printPerson() {
System.out.println("Person{" +
"idCard='" + idCard + '\'' +
", name='" + name + '\'' +
", sex=" + sex +
", age=" + age +
", nativePlace='" + nativePlace + '\'' +
", address='" + address + '\'' +
'}');
}
}
H. java的基礎問題與答案匯總有哪些
java的基礎問題與答案匯總很多,下面例舉一部分「」
1、九種基本數據類型的大小,以及他們的封裝類。
2. Switch能否用string做參數?
3. equals與==的區別。
4. Object有哪些公用方法?
5. Java的四種引用,強弱軟虛,用到的場景。
6. Hashcode的作用。
7. ArrayList、LinkedList、Vector的區別。
8. String、StringBuffer與StringBuilder的區別。
9. Map、Set、List、Queue、Stack的特點與用法。
10. HashMap和HashTable的區別。
11. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼。
12. TreeMap、HashMap、LindedHashMap的區別。
13. Collection包結構,與Collections的區別。
14. try catch finally,try里有return,finally還執行么?
I. 10道java基礎選擇題(3)
71.C
packagetest3;
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsException{
String[]s={"ab","bc","cd"};//正確
Integerresults[]={newInteger(1),newInteger(2)};//正確
int[]a;a={3,4,5,6};//錯誤
int[]b={3,4,5,6};
floatf4[]=newfloat[]{1.0f,2.0f,3.0f};
}
}
72.A
無法明白A是什麼意思,跟誰相等?
packagetest3;
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsException{
inta[]={3,4,5};
int[]b={3,4,5};//聲明一個數組,用int[]a或者inta[]都正確
System.out.println(a.length);//數組的長度可以用數組的屬性length獲得
intc[]=newint[];//錯誤,證明數組在使用前必須明確其長度
}
}
73.B
74.A
對於變數:
public, static & final
對於方法:
public & abstract
75.D
可以什麼方法都沒有
76BD
77 A
78D
79A
80A