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
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