Java基礎知識總結-1
這裡基於Java的基礎知識列舉一些題目,這些題目比較考驗基本功是否紮實。同樣這些有可能作為職場面試題出現,所有大家可以好好看看。
文章目錄
一、變數與運算子
問題1:float和long表示的資料範圍,誰大?
問題2:以下程式碼中,是否有錯誤?為什麼錯誤?
byte b1 = 2;
byte b2 = b1 + 128;
byte b3 = 128;
char c1 = 'a';
short s1 = 10;
char c2 = c1 + s1;
問題3:以下程式碼的結果,是什麼?
char c1 = 'a';
int i1 = c1 + 10;
System.out.println(i4);
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);
char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c + num + str);
System.out.println(c + str + num);
System.out.println(c + (num + str));
System.out.println(str + num + c);
int m = 2;
int n = 3;
n *= m++;
System.out.println("m=" + m);
System.out.println("n=" + n);
int n1 = 10;
n1 += (n1++) + (++n1);
System.out.println(n1);
問題4:如果最快算出2*8的結果?
二、程式流程控制
問題5:以下程式碼的結果,是什麼?
int c = 5;
switch(c){
default:
System.out.println("a");
case 4:
System.out.println("b");
case 3:
System.out.println("c");
break;
case 2:
System.out.println("d");
case 1:
System.out.println("e");
}
三、陣列
問題6:以下程式碼是否有錯誤?
int[] arr1 = {1,2,3};
int arr2[] = new int[]{1,2,3};
int[] arr3 = new int[3]{1,2,3};
int[][] arr4 = new int[3][];
System.out.println(arr4[0]);//null
System.out.println(arr4[0][0]);//報java.lang.NullPointerException
問題7:以下程式碼的結果,是什麼?
int[] arr1 = {};
System.out.println(arr1.length);
System.out.println(arr1);
int[] arr2= new int[5];
System.out.println(arr2[3]);
System.out.println(arr2);
char[] c = new char[5];
System.out.println(c);
char[] c1 = new char[]{'a','b','c'};
System.out.println(c1);
int[][] arr = new int[3][4];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
答案
- 問題1:float和long,誰表示的資料範圍更大?
資料型別 | 位元組 |
---|---|
long | 8 |
float | 4 |
為什麼8位位元組long的資料範圍會比4位位元組float的資料範圍小呢?
long:2^63-1;float : 3.4x10^38 > 2x10^38 > 2x8^38
可得:2x8^38 = 2x2338 = 2x2^114
因為:2x2^114 > 2^63-1
所以:float的資料範圍大於long的資料範圍
關於兩者記憶體儲存,可以參考文章:https://blog.csdn.net/weixin_42518062/article/details/85046071
- 問題2:以下程式碼中,是否有錯誤?為什麼錯誤?
byte b1 = 2;
byte b2 = b1 + 128;//編譯報錯,因為運算後型別會自動提升
byte b3 = 128;//編譯報錯,因為範圍溢位
char c1 = 'a';
short s1 = 10;
char c2 = c1 + s1;//編譯報錯,因為運算後型別會自動提升
- 問題3:以下程式碼的結果,是什麼?
char c1 = 'a';
int i1 = c1 + 10;
System.out.println(i4);
//字元'a'代表97,加10,得107
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);
//精度損失,-128
char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c + num + str);//107hello
System.out.println(c + str + num);//ahello10
System.out.println(c + (num + str));//a10hello
System.out.println(str + num + c);//hello10a
//String可以和8種基本資料型別變數做運算,且運算只能是連線運算
int m = 2;
int n = 3;
n *= m++; //n = n * m++;
System.out.println("m=" + m);//3
System.out.println("n=" + n);//6
int n1 = 10;
n1 += (n1++) + (++n1);//n1 = n1 + (n1++) + (++n1);
System.out.println(n1);//10+10+12=32
問題4:如果最快算出2*8的結果?
通過位運算
2<<<3 或者 8<<1,兩種最高效O(1)
問題5:以下程式碼的結果,是什麼?
int c = 5;
switch(c){
default:
System.out.println("a");
case 4:
System.out.println("b");
case 3:
System.out.println("c");
break;
case 2:
System.out.println("d");
case 1:
System.out.println("e");
}
//列印abc
問題6:以下程式碼是否有錯誤?
int[] arr1 = {1,2,3};//正確,型別推斷
int arr2[] = new int[]{1,2,3};//正確,宣告 + 初始化 + 賦值
int[] arr3 = new int[3]{1,2,3};//沒有這樣的語法
int[][] arr4 = new int[3][];
System.out.println(arr4[0]);//列印null
System.out.println(arr4[0][0]);//報錯java.lang.NullPointerException
問題7:以下程式碼的結果,是什麼?
int[] arr1 = {};
System.out.println(arr1.length);//列印0
System.out.println(arr1);//列印物件的地址值[I@7d6f77cc
int[] arr2= new int[5];
System.out.println(arr2[3]); //a[3]的預設值為0
System.out.println(arr2); //列印物件的地址值[I@5aaa6d82
char[] c = new char[5];
System.out.println(c); //列印的不是地址值,而是值,5個空格。
char[] c1 = new char[]{'a','b','c'};
System.out.println(c1); //abc
//這是因為println()過載方法的結果是不同的
int[][] arr = new int[3][4];
System.out.println(arr);//列印地址值[[I@5aaa6d82
System.out.println(arr[0]);//列印地址值[I@73a28541
System.out.println(arr[0][0]);//列印int預設值0
相關文章
- Java基礎知識總結Java
- JS基礎知識總結(1)JS
- Java基礎知識點總結Java
- Java基礎對反射知識總結Java反射
- Java基礎面試知識點總結Java面試
- java基礎語法知識小結(1)Java
- Rust 基礎知識總結Rust
- SpringIOC基礎知識總結Spring
- 索引基礎知識總結索引
- React 基礎知識總結React
- Java個人知識點總結(基礎篇)Java
- Java基礎知識回顧之七 —– 總結篇Java
- Java基礎知識回顧之七 ----- 總結篇Java
- JS基礎知識總結(2)JS
- CSS基礎知識總結(4)CSS
- TCP/IP 基礎知識總結TCP
- Redis 基礎知識點總結Redis
- ES 基礎知識點總結
- JS基礎知識深入總結JS
- Flutter 知識點總結-基礎篇Flutter
- 演算法基礎知識總結演算法
- yii2 基礎知識總結
- 前端知識點總結——JavaScript基礎前端JavaScript
- 零基礎學習Java,全方位知識點總結!Java
- 1、基礎知識
- 好程式設計師Java培訓分享Java基礎知識總結程式設計師Java
- 正規表示式基礎知識總結
- python基礎語法知識點總結Python
- java基礎知識Java
- 初識Java Java基礎知識Java
- 超詳細的Java面試題總結(四 )之JavaWeb基礎知識總結Java面試題Web
- DS #1 基礎知識
- 1.基礎知識
- DDD基礎知識1
- Python基礎知識1Python
- PHP 基礎知識-1PHP
- Java面試知識總結(一)-- 網路基礎Java面試
- 【python----發軔之始】【基礎知識總結】Python