Java学习笔记-笔试考点

                          java笔记




1》,java关键字必须以$ _ 字母开头
2》,is-a是指类之间的继承关系;
has-a是指对象和成员之间的从属关系(类中必须定义成员)
3》,静态方法静态代码块
public class Static {
static{
int x=5;
}
static int x,y;
public static void main(String[] args) {
x--;
y=(x++)+(++x);
System.out.println(x+y+++x);//输出为2
}
}
静态代码块:
静态代码块主要用于类的初始化。它只执行一次,并在main函数之前执行。
静态代码块的特点主要有:
静态代码块会在类被加载时自动执行。
静态代码块只能定义在类里面,不能定义在方法里面。
静态代码块里的变量都是局部变量,只在块内有效。
一个类中可以定义多个静态代码块,按顺序执行。
静态代码块只能访问类的静态成员,而不允许访问实例成员。
4》java中的变量声明注意:
只能从低精度向高精度转化,整数默认int型,小数默认double型,所以
int a=100l,错;float f=1.9,错;
5》线程的执行体为run()方法
6》class Persion{
private int a;
public int change(int m){
return m;
}
}
public class ObRef extends Persion{
public int b;
public static void main(String[] args) {
Persion p=new Persion();
ObRef o=new ObRef();
int i;
i=b;//Cannot make a static reference to the non-static field b
i=p.a;//The field Persion.a is not visible,chang a to public
i=o.b;
i=p.change(90);
}
}
7》重写父类方法不能改变返回值和参数值(会出现编译错误)
8》Exception:不检查异常runtimeException:可以编译通过,不需要处理,程序自动抛出
检查异常:即除了RuntimeException,不声明编译不能通过,如文件不能找到IOException


9》判断字符串空串:区别null和空串,空串即str="";
但不能通过(str=="")判断,应该用str.equals("");或str.length==0.
10》区别编译时错误和运行时错误:
编译时错误是指java语法有问题;
运行时错误是指程序存在异常,即error或Exception
11》值传递和引用传递(java中全部都是“值传递”):
传递的都是基本类型的复制或引用的复制;
有一个注意点:
string str="good";char[] ch={'a','b','c'}
public int change(String str,char[] ch){
ch[0]='g';str="test good";}输出str不变,但ch变了
原因:str不变好理解(值传递),但ch变了是因为传的是ch数组,
但操作的是ch[0]这个单值,相当于是ch.indexof(0)指针的作用。
12》51、对于下列代码 
public class Parent { 
  public int addValue (int a ,int b ){     int s; 
    s = a + b;     return s;   } } 
class Child extends Parent {  } 
下述哪些方法可以加入类Child?  
A .  int addValue(int a ,int b){//do something…}  //默认的defout缩小了public范围
B.  public void addValue(){//do something…}  //重载方法
C.  public int addValue(int a ){//do something…} //重载方法
D.  public int addValue( int a, int b )throws MyException {//do something…} //重写方法多出了异常声明
补充:public long addValue( int a, int b )//重写方法返回值不一致
答:BC 
13》java没有多维数组,数组都是嵌套关系:
即数组的定义有:
int a[][]=new int[4][];(只定义了外部数组,没有定义内部数组):
(这叫定义了一个不规则数组,后面数组大小并不一样)
int a[][]=new int[4][5];
int a[][]=new int[][5];(这个定义是错误的!)
14》Runnable只有一个run方法,没有start方法
15》java网络编程:java网络编程是建立在socket基础上的;
java网络接口支持IP以上的所有高层协议;
16》指出下面程序的运行结果:   
class A{     static{       
System.out.print("a");     }      
public A (){       System.out.print("x");    } }  
class B extends A{ static{      System.out.print("b");      }       
public B (){          System.out.print("y"); } }  
public class Test{      
public static void main(String[] args){       
A ab = new B ();       
ab = new B ();      } }  
答:abxyxy
类的加载过程:创建实例时加载静态代码块,一次从父到子,
静态代码块整个过程只执行一次,
然后在加载构造方法,从父到子
17》  静态方法不能对对象实施操作,只能访问自身静态域,
静态方法由类名来调用,例如:Persion p=new Persion();
p.getname()同Persion.getname();p没有实际意义!!
----
getSomething ()执行时发生IllegalArgumentException会出现什么样的结果?     void makeConnection(String url)  {   try { 
   getSomething(); 
  }catch(NullPointerException e) { 
   System.out.printin("Invalid URL")     return; 
  }catch(Exception e) { 
   System.out.println("Exception");   }  } 
答:打印Exception  
18》有2个类Cat及WhiteCat,代码如下: public class Cat { 
 protected static String color = "random";   
 public Cat() {  } 
 public void showCatColor() { 
  System.out.println("Cat:" + color);  }   
 public static void  showColor() { 
  System.out.println("Cat:" + color);  } } 
public class WhiteCat extends Cat { 
 protected static String color = "white";   
 public WhiteCat() {   super();  }   
 public void showCatColor() { 
  System.out.println("WhiteCat:" + color);  }   
 public static void showColor() { 
  System.out.println("WhiteCat:" + color);  } } 
请分析下面各段程序的运行结果 
A.WhiteCat whiteCat = new WhiteCat(); Cat cat = whiteCat; cat.showColor(); cat.showCatColor(); B.Cat cat = new Cat(); 
WhiteCat whiteCat = (WhiteCat) cat; cat.showColor(); cat.showCatColor(); 
C.Cat cat = new WhiteCat(); 
WhiteCat whiteCat = (WhiteCat) cat; cat.showColor(); cat.showCatColor(); 答: 
A段执行的结果是: Cat:random WhiteCat:white 
B段执行的结果是: 会抛出java.lang.ClassCastException异常 
C段执行的结果是: Cat:random WhiteCat:white

你可能感兴趣的:(Java,java)