您的位置:首页 > 编程语言 > Java开发

Java基础(备忘录)

2011-04-22 22:47 155 查看
一、

1.成员函数被重载的特征:

(1)相同的范围(在同一个类中)

(2)函数名相同

(3)参数不同

(4)virtual关键字可有可无

2.覆盖的特征:

(1)不同的范围(分别位于派生类与基类)

(2)函数名相同

(3)参数相同

(4)基类函数必须有virtual关键字

3.静态方法不能被覆盖成非静态的方法

二、

class Parent {

public static String staticname = "parentStaticname";

public String name = "Parent";

public String getName(){

return name;

}

}

class Child extends Parent {

public static String staticname = "childStaticname";

public String name = "child";

public String getName(){

return name;

}

public String getchildName(){

return name;

}

}

public class Test {

public static void main(String[] args) {

Parent parent;

Child child;

child = new Child();

parent = (Child)child;

System.out.println(child.getClass());

System.out.println(child.name);

System.out.println(child.getName());

System.out.println(parent.getClass());

System.out.println(parent.name);

System.out.println(parent.getName());

System.out.println(child.staticname);

System.out.println(parent.staticname);

}

}

运行结果:

class qg.java.Child

child

child

class qg.java.Child

Parent

child

childStaticname

parentStaticname

三、

1.匿名内部类是没有名字的内部类,不能继承其它类,但可以作为一个接口,由另一个内部类实现

2.final类是不可以被继承,不可以子类化,没有更多的限制,所有方法都默认为final,为方法添加final没有意义

3.抽象类是可以声明,但不可以实例化;

4.被abstract修饰的方法为抽象方法,抽象方法是不可以有实体的;

5.抽象类中可以有非抽象的方法,非抽象的方法是必须有实体的;

6.抽象类中如果全是抽象方法,就变成了接口

7.在abstract class
中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是
static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

8
.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

9.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

10.接口中的方法默认都是 public,abstract 类型的。

四、

定义在类中的变量会被赋予一个默认的值

下面代码是正确的:

public class Pvf {

static boolean Paddy;

public static void main(String argv[]) {

System.out.println(Paddy);

}

}

输出结果是:false

如果Paddy没有static修饰,则编译出错。

五、

1.String 与 char 之间的转换

String s = "hello";

char c[] = {'h','e','l','l','o'};

// String 转换成char

char ch[] = s.toCharArray();

// char 转换为string

String str = new String(c);

2.StringBuffer跟String

(1)String的创建

String str = "Hello";

JVM先根据内容"Hello"查找对象,如果没有找到,则在堆(heap)上创建新对象,并赋予str,否则使用已经存在的对象

String s = new String("Hello");

JVM直接在heap上创建新的对象,所以在heap中会出现内容相同,地址不同的String对象

(2)String的比较

”==“比较的是地址

”equal“比较的是内容

(3)intern()方法:查找内容相同的字符串

String s1 = "Hello";// 创建对象(1)

String s2 = new String("Hello"); // 将pool中的”Hello“对象复制一份放到heap中,再赋给s2

s2 = s2.intern(); // 找到对象(1),并赋给s2

s1 == s2; // true 此时s1,s2同指对象(1)

3.String与StringBuffer效率比较

String s = "s1";

s += "s2";

s += "s3";

因为String是不可变对象,每次”+=“操作都会构造新的String对象

String str = "hello" + "world"; // 只创建一个String对象

StringBuffer内部实现是char数组,默认初始化长度是16,每当字符串长度大于char数组长度时,JVM会构造更大的新数字,并将原先的数组内容复制到新数组。

4.下面代码创建了几个对象?

String A,B,C;

A = "a"; // 1个(1)

B = "b"; // 1个

A = A + B; // (1)成为垃圾,被回收 1个 ”ab“

StringBuffer D = new StringBuffer("abc"); // 2个 "abc"和”abc“的复制

D = D.append("567"); // 1个 ”567“ StringBuffer的特点是改变对象本身而不是创建新的对象,append是对同一个对象进行处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: