1、public/private/protected/默認修飾符
有如下一段程序:
package a.b.c;
public class Test{
String name="BlueDavy";
protected String desc="blog.bluedavy.cn";
}
package a.b.c;
public class TestA{
private String name;
private String desc;
public TestA(){
Test test=new Test();
name=test.name;
desc=test.desc;
}
}
package a.b.c.d;
public class TestB{
private String name;
private String desc;
public TestB(){
Test test=new Test();
name=test.name;
desc=test.desc;
}
}
package a.b.c.d;
import a.b.c.Test;
public class TestC extends Test{
private String cname;
private String cdesc;
public TestC(){
cname=name;
cdesc=desc;
}
}
請問以上TestA、TestB、TestC能編譯過嗎,如編譯不過,原因是什么?
2、static/final修飾符
有如下一段程序:
package a.b.c;
public class Test{
private static int i=0;
public int getNext(){
return i++;
}
}
package a.b.c;
public class TestB{
public static void main(String[] args){
Test test=new Test();
System.out.println(test.getNext());
Test testObject=new Test();
System.out.println(testObject.getNext());
System.out.println(test.getNext());
}
}
請問最后打印出來的是什么,為什么?(這里其實還潛在的考察了i++和++i的不同)
3、集合
有這樣一段程序:
package a.b.c;
public class Test{
public static void main(String[] args){
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("a");
Set set=new HashSet();
set.add("a");
set.add("b");
set.add("a");
System.out.println(list.size());
System.out.println(set.size());
}
}
請問運行上面的程序后會打印出的是什么,為什么?
4、字符串操作
有這么一段程序:
String a=new String("a");
String b="b";
String c=a+b;
StringBuffer strBuf=new StringBuffer();
strBuf.append("a");
strBuf.append("b");
String d=strBuf.toString();
StringBuilder strBuilder=new StringBuilder();
strBuilder.append("a");
strBuilder.append("b");
String e=strBuilder.toString();
請問以上程序片段中c、d、e的字符串的創建各有什么不同?
5、對象比較
有這么一段程序:
package a.b.c;
public class Test{
public String name="BlueDavy";
}
package a.b.c;
public class TestA{
public static void main(String[] args){
Test test=new Test();
Test testB=new Test();
System.out.println(test.equals(testB));
System.out.println(test.name.equals(testB.name));
}
}
請問以上程序執行的結果是,為什么?
潛在問題,如要test.equals(testB)為true,需要怎么做?
以上考察變量作用域知識,protected受保護的,保護給朋友和子女;默認情況下為friendly,友好、朋友,同包、同胞,一個包內的才可以訪問,子女不算朋友。注意默認情況下為friendly,只是這么說,但 java中并沒有這個修飾符。
-------------------------------------------------------------------------------
6.字符串類型對象創建及存儲知識
public class String1 {
/*
* 1.String使用private final char value[]來實現字符串的存儲,也就是說String對象創建之后,
* 就不能再修改此對象中存儲的字符串內容,就是因為如此,才說String類型是不可變的(immutable)。
* 2.String類有一個特殊的創建方法,就是使用""雙引號來創建.例如new String("i am")實際
* 創建了2個String對象,一個是"i am"通過""雙引號創建的,另一個是通過new創建的.
* 只不過他們創建的時期不同, 一個是編譯期,一個是運行期!
* 3.棧中存放基本類型變量和對象的引用;堆中存放類的對象。
*/
public static void main(String[] args){
String a = new String("123");
String b = new String("123");
System.out.println("a == b is:" + (a == b));
System.out.println("a.equals(b) is: " + a.equals(b));
System.out.println("a.hashCode() == b.hashCode() is: " + (a.hashCode() == b.hashCode()));
String c = "123";
String d = "123";
System.out.println("c == d is: " + (c == d));
System.out.println("c == a is: " + (c == a));
String e = "456";
String f = "123456";
String g = c + e;
System.out.println("g == f is: " + (g == f));
}
}
【參考文章】
http://www.moon-soft.com/doc/24701.htm
http://it.kswchina.com/java/zd/421167.html
http://www.tkk7.com/xcp/archive/2008/08/10/stack.html
---------------------------------------------------------------
7.構造函數的調用順序
package test;
class FatherClass {
public FatherClass(){
System.out.println("Father");
}
}
class ChildClass extends FatherClass{
public ChildClass(){
System.out.println("Child");
}
}
public class Test {
public static void main(String[] args){
FatherClass a = new FatherClass();
ChildClass b = new ChildClass();//若B無沒有顯示的構造函數,會去調用A的構造函數???
}
}
運行結果為
Father
Father
Child
--------------------------------------------------------------
8.java參數傳遞
package test;
public class Test {
public static void main(String[] args){
Test test = new Test();
String[] arr = {"yang","aiyou"};
test.swap(arr[0],arr[1]);
System.out.println(arr[0] + "," + arr[1]);
test.swap(arr,0,1);
System.out.println(arr[0] + "," + arr[1]);
}
public void swap(String s1,String s2){
String temp = s1;
s1 = s2;
s2 = temp;
}
public void swap(String[] arr,int index1,int index2){
String temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
}
運行結果為:
yang,aiyou
aiyou,yang
------------------------------------------------------------
posted on 2008-10-17 23:24
楊愛友 閱讀(406)
評論(0) 編輯 收藏 所屬分類:
java相關技術