Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说java基础知识点整理大全「建议收藏」,希望能够帮助你!!!。

1)==用于基本数据类型的比较,在引用数据类型上面使用的时候比较的是地址值 
 例: 
 下面程序的运行结果是() 
 String str1 = “hello”; 
 String str2 = “he” + new String(“llo”); 
 System.err.println(str1 == str2);
A hello B he C true D false
答案:false 解析:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是true了。
1)普通类的方法名字其实是可以与类名一致的,和构造函数唯一的区别就是构造函数没有返回值类型,而普通方法有返回值类型 
 例: 
 下列说法正确的有() 
 A. class中的constructor不可省略 
 B. constructor必须与class同名,但方法不能与class同名 
 C. constructor在一个对象被new时执行 
 D.一个class只能定义一个constructor
答案:C 解析:这里可能会有误区,其实普通的类方法是可以和类名同名的, 
 和构造方法唯一的区分就是,构造方法没有返回值
2)参数传递与修改 
 不管是对象、基本类型还是对象数组、基本类型数组,在函数中都不能改变其实际地址但能改变其中的内容
例: 
 下列程序的运行结果是:
public class Example {
  String str = new String("good");
  char[] ch = { 'a', 'b', 'c' };
  public static void main(String args[]) {
             Example ex = new Example();
             ex.change(ex.str, ex.ch);
             System.out.print(ex.str + " and ");
             System.out.print(ex.ch);
  }
  public void change(String str, char ch[]) {
             str = "test ok";
             ch[0] = 'g';
  }
}A、 good and abc 
 B、 good and gbc 
 C、 test ok and abc 
 D、 test ok and gbc
1)关于switch语句: 
 case语句后面如果没有break,那么就会一直往下执行。 
 例: 
 下面的方法,当输入为2的时候返回值 public static igetValue(int i) { 
 int result = 0; 
 switch (i) { 
 case 1: 
 result = result + i; 
 case 2: 
 result = result + i * 2; 
 case 3: 
 result = result + i * 3; 
 } 
 return result; 
 } 
 A 0 B 2 C 4 D 10
答案:D 解析:注意这里case后面没有加break,所以从case 2开始一直往下运行。
Thread类中start()方法和run()方法的使用区别: 
 start()是用来启动一个线程,当调用了start方法之后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()方法其实就和普通方法一样,按照顺序执行,不会单独开辟一个线程,从而失去了线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。 
 例: 
 下面程序的运行结果:()
  public static void main(String args[]) {
             Thread t = new Thread() {
                 public void run() {
                     pong();
                 }
             };
             t.run();
             System.out.print("ping");
  }
  static void pong() {
             System.out.print("pong");
  }A pingpong B pongping C pingpong和pongping都有可能 D 都不输出
答案:B 解析:这里考的是Thread类中start()和run()方法的区别了。start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。
1)关于接口和接口中的修饰符
例: 
 Java接口的修饰符可以为()
A private B protected C final D abstract
答案:cd
1)ArrayList扩充问题 
 ArrayList默认的长度为10个,但是如果在声明的时候指定了长度的话,就会一次性创建指定长度,而不需要扩充。 
 例: 
 ArrayList list = new ArrayList(20);中的list扩充几次()
A 0 B 1 C 2 D 3
答案:A 解析:这里有点迷惑人,大家都知道默认ArrayList的长度是10个,所以如果你要往list里添加20个元素肯定要扩充一次(扩充为原来的1.5倍),但是这里显示指明了需要多少空间,所以就一次性为你分配这么多空间,也就是不需要扩充了
1)异常try……catch语句块的执行顺序 
 当有多个catch语句的时候,从最前面的catch语句块依次进行异常类型的匹配,仅仅匹配一个,当按顺序来从上到下匹配到一个之后,后续的匹配都不会再执行了;如果父类异常在子类异常的前面的时候,首先匹配的就是父类异常,子类异常是不会得到匹配并执行的。所以在写代码的时候,父类异常Exception一般都放在catch语句块的最后一个。 
 例: 
 getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果()
public void getCustomerInfo() {
             try {
               // do something that may cause an Exception
             } catch (java.io.FileNotFoundException ex) {
                    System.out.print("FileNotFoundException!");
             } catch (java.io.IOException ex) {
                    System.out.print("IOException!");
             } catch (java.lang.Exception ex) {
                    System.out.print("Exception!");
             }
  }A IOException! 
 B IOException!Exception! 
 C FileNotFoundException!IOException! 
 D FileNotFoundException!IOException!Exception!
答案:A 解析:考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。
2)编译时异常:变量没有初始化的时候不能够输出。 
 Java中所有定义的基本类型或对象都必须初始化才能输出值,否则会发生编译时异常。 
 例: 
 下面代码的运行结果为:()
import java.io.*;
import java.util.*;
public class foo{
  public static void main (String[] args){
             String s;
             System.out.println("s=" + s);
  }
}A 代码得到编译,并输出“s=” 
 B 代码得到编译,并输出“s=null” 
 C 由于String s没有初始化,代码不能编译通过 
 D 代码得到编译,但捕获到 NullPointException异常
答案:C