1、java总结大全包括所有java基础知识点System.out.println(010);输出八进制数010的十进制值8注意是数字0开头,不是字母o16进制以0x或0X开头class ValHold public int i = 10;public class ObParm public void amethod() ValHold v = new ValHold(); another(v); System.out.println(v.i); public void another(ValHold v) v.i = 20; ValHold vh = new ValHold();v =vh; S
2、ystem.out.println(v.i); public static void main(String argv) ObParm o = new ObParm(); o.amethod(); 此题的答案是1020为什么不是1010呢?这样解释吧,按照sun官方的说法:当一个引用变量作为参数传递给一个方法时, 在这个方法内可以改变变量的值,即改变引用指向的对象,(本题中将vh赋给v)但是方法的调用结束后,改变量恢复原来的值,即变量仍然指向原来的对象。 (即another(v)调用结束之后,v又回复到第一次ValHold v = new ValHold();时指向的地址空间。) 但是如果在方
3、法内改变了引用指向的对象的数据(属性),那么当方法的调用结束后,尽管引用仍然指向原来的对象,这个对象的某个属性已经被改变了(v的i值在 执行v.i=20的时候就已经被改变了,所以调用another结束后,v.i已经变成了20) 重载overload方法不能用返回值判断,而应当以参数判断(有无参数、参数类型、参数个数、参数排列顺序)public class InOut String s= new String(Between); public void amethod(final int iArgs) int iam; class Bicycle Bicycle() System.out.pri
4、ntln(s); /这两句话可以,也就是说可以访问s System.out.println(iArgs); /和final int 常量 /System.out.println(iOther); new Bicycle(); public void another()int iOther; public static void main(String args) InOut inout= new InOut(); inout.amethod(22); Inner classInner class能够存取外部类的所有实例变量-无论这些实例变量有什么样的存取控制符(比如private),就像类中的
5、方法能够存取方法所在类的所有变量一样;如果inner class定义在方法中,则inner class能够存取方法所在的类中的实例变量,也能存取该方法中的局部变量,但该局部变量必须是final的,也就是只能访问方法中的常量.(上面所说的都是普通内部类,不是静态内部类的情况)float f=1/3;float f=10; /输出10.0int i=1/3;int x = (int)(1.23);double d=999d; 都是合法的表达式如果将float f=1/3; 改成float f=1/3f; 则f=0.0i=0d=999.0f= 0.33333334Integer没有setValue方
6、法。instanceof Tests whether an instance derives from a particular class or interface。注意:实现了某接口的类的对象也是该接口的实例;某类的对象也是该类父类的实例。Interfaces cannot have constructors接口没有构造函数接口中的所有数据成员都是static final,即静态常量(这两个关键字可以不写)但必须给常量赋初值;接口中的所有方法都只有定义没有实现细节,并且全部为public(可以不写出来),所以接口中的方法全部是抽象方法接口比抽象类更抽象Runnable接口只有run()一个
7、方法注意:不带参数X位的数据类型的范围在-2x-12x-1-1特例:字符char型表示单个16位Unicode字符,所以它的取值范围0216-1class Base public void Base() System.out.println(Base); public class In extends Base public static void main(String argv) /System.out.println(99); / (*)In i=new In(); /in.Base(); 显式调用Base()有输出,可见加了返回类型后,Base()是一个普通的方法,不再是构造方法了 运
8、行结果:Compilation and no output at runtime构造方法没有返回值,但是如果你在构造方法前加了void关键字,左边的程序将可以通过编译,也可以运行,但是没有输出Base.(很奇怪)然而如果你将左边打*的行的注释去掉,则可以输出99,但没有输出Base.调用有输出, native修饰的方法没有方法体,用一个分号“;”代替大括号。如:static native void amethod();static void amethod() 一个文件只能有一个public类,而且文件名要以这个类命名但是如果将public删除(即没有public方法了),程序仍然能正确运行而
9、且有输出1)static methods do not have access to the implicit variable called this静态方法不能存取隐式变量this2) A static method may be called without creating an instance of its class3) A static method may not be overriden to be non-static静态方法不能重置为非静态方法静态方法main不是java关键字!缺省构造函数没有返回类型Interface中只有数据和方法的声明,它只是提供一个框架。所以其
10、中的方法不存在存取接口中定义的静态常量的问题。4) The size of a string can be retrieved using the length property这句话是错误的,计算字符串的长度的length()是一个方法,不是property!而数组则有一个length成员域,它不是方法!,如int myarray = new int3myarray.length返回myarray的长度int array=new int10;array.length=15;/compile error数组的长度一旦确定就不能改变!1 如果在一个方法中声明一个基本类型变量,那么在使用这个变量之
11、前,它必须被赋值!2 如果在类体中,方法之外定义基本类型变量, 则可以不赋初值,系统自动采用该类型的缺省值;3 对于基本数据类型的数组,无论是在方法中,还是在方法之外,如果未赋初值,系统都会为它赋相应基本类型的缺省值。而如果数组是对象数组,则初值为null。 初值问题非静态inner classes cannot have static declarationsnon-static inner classes 不能有静态的方法、变量等。内部类可以有任何的存取控制符例如protected, public, private.Inner classclass A public static void
12、 a() System.out.println(super!); class TestStatic extends A public static void a() System.out.println(child!); public static void main( String args) A obj = new TestStatic(); System.out.println(obj); obj.a(); 有static,输出TestStatic1fcc69 /可见obj是子类对象super!如果将static去掉,则输出 (表示父类的同名方法被重置override了)TestStat
13、ic1fcc69child!按sun的说法,静态方法不能被override,只是被隐藏(hidden)了yield()方法无参数,yield()只能使同优先级的线程有执行的机会sleep(long millis,int nanos)方法有参数。call to super must be first statement in constructor!而且,切记super方法只能在构造方法中写,其他方法中一概不能写!1) A program can suggest that garbage collection be performed but not force it2)不同的java开发环境的
14、垃圾处理机制不太一样。garbage collectionnon-static variable cannot be referenced from a static contextstatic variablepublic class Inc public static void main(String argv) Inc inc = new Inc(); int i =0; inc.fermin(i); i = i+; System.out.println(i); void fermin(int i) i+; 睁大眼睛看仔细结果是0 !对基本类型是传值,pass a copySwicth语
15、句中的判断条件必须是int和它以下的数据类型即short、char、bytepublic class Agg static public int i=10; /(*) public static void main(String argv) switch(i) case 1: System.out.println(one); default: System.out.println(default); case 10: System.out.println(ten); public class Testswitch public static void main( String args) in
16、t x=Integer.parseInt(args0);switch (x) case 4: System.out.println(4); case 3: case 2: System.out.println(2); case 1: System.out.println(1);public class Testswitch public static void main( String args) int x=Integer.parseInt(args0);switch (x) case 1: System.out.println(1); case 2: case 3: System.out.
17、println(3); case 4: System.out.println(4);奇怪的switch!1) 如果有匹配的值,无论default预放哪里都没关系。2) 如果无匹配值,即,将case10去掉,则会执行default3) 如果将case 1放到case10后,则case10及case1都会有输出!4)如果i=4,输出: defaultten5)如果将default放case10后,输出 default可见无匹配值时,从default语句开始往下都有输出,直到遇到break或结束。5)总结:从匹配的地方开始下面的语句都有输出,直到遇到break或程序结束。这个匹配的地方包括defau
18、lt,参见第4点。java Testswitch 3输出21java Testswitch 1134原因是:没有加break;语句!没有break则从匹配的地方开始往下全部有输出!只到遇到breakgoto 和const虽然是java关键字,但是目前还未用于Java语言。构造方法不能加static关键字Public void init() Thread t = new Thread() /some codes ; /匿名内部类象语句一样被定义,所以要加分号! t.start();创建了Thread的一个实例,其实是创建了Thread的子类的一个实例,这个子类我们并没有给他命名,但是我们已经给出
19、了这个子类的定义。匿名内部类没有构造方法!Java隐式的调用其父类的构造方法! In Java, anonymous classes are often used to perform simple event handling for user interface.Anonymous ClassesAs you can see, the new expression states that it is creating an instance of class Thread. Actually, its creating a subclass of Thread that we have n
20、ot named, although we have supplied a definition for this subclass.Anonymous classes cannot have constructors, Java invokes their superclass constructor implicitly.public class Testinner int t=10; public void a() final int u =90; class InMethod /方法中内部类 InMethod() /内部类的构造方法 System.out.println(u=+u);
21、/封装方法内的变量必须是final才能访问到! System.out.println(t=+t); /外部类的变量可以任意访问! new InMethod();/必须在方法a()中创建内部类对象之后, / Testinner对象才能通过 a()访问到InMethod类 public static void main (String args) Testinner t= new Testinner(); t.a(); 方法中的内部类的演示程序输出:u=90t=10方法中的内部类不可以是static的!如果一个内部类是静态的(当然只能是类中的内部类啦),那么这个类就自动的成为顶级(top-leve
22、l)类即普通的类。静态内部类中的方法(无论是静态的方法还是非静态的方法)只能直接访问外部类中的静态成员,要访问外部类中的非静态成员,则必须创建外部类的对象。静态内部类的问题static inner class 42e1 是double型的。 0x0123 是int型的。 Given an ActionEvent, how to identify the affected component? 用getSource()方法,记住!(1.4不要求awt) StringBuffer中的方法是append,String中的方法是concat,并且,试图在其他方法中通过调用该方法改变String是徒劳的
23、。 system.exit(int value),也就是说只要是int都能使虚拟机退出,System.exit(a);同样的是合法的. which four types of objects can be thrown use throws? A.Error B.Event C.Object D.Excption E.Throwable F.RuntimeException Ans are : A D E F which two are equivalent? A. 3/2 / 1B. 32 / falseC. 3*4 /12D. 32 /12E. 3*22 /62=5F. 32 (迷惑人的地
24、方,并没有操作符) ans: c,d & | 可以用在int和boolean上。(异或只能用在int上)。& | 只能用在boolean上,作用同& |,但是与其不同在于& |有短路运算,而位操作没有。 Hashtable implements Map,Cloneable,Serializible which two interfaces provide the capability to store objects using a key-value pair? A. java.util.Map B. java.util.Set C. java.util.List D. java.util.
25、SortedSet E. java.util.SortedMap F. java.util.CollectionAns: A,E实例变量instance variables 和局部变量local variables的区别:1)实例变量能够在类定义的整个代码中使用(比如类中所有的方法中),他一般系统会自动为他赋缺省值;2)局部变量则没有缺省值。Method init is a special applet method that is normally the first method defined by the programmer in an applet and is guarantee
26、d to be the first method called in every applet. Method init is called once during an applets execution. The method normally initializes the applets instance variables (if they need to be initialized to a value other than their default value) and performs any tasks that need to be performed once at
27、the beginning of an applets execution.import java.applet.Applet;import java.awt.*;public class Sample extends Applet private String text = Hello World; public void init() add(new Label(text); new Sample(a); public Sample (String s) add(new Label(hahahahahah); =class First public First (String s) Sys
28、tem.out.println(s); / public First() /加上这条语句则正常运行! /由于Second类初始化调用父类无参数的构造函数public class Second extends First public static void main(String args ) new Second(); Applet中的public void init()方法Applet中可以有构造函数Init()中缺省调用无参构造函数(无论这个无参构造函数是系统提供的,还是用户自己写的),因此如果要写带参数的构造方法,那么用户必须显式的写出无参构造方法,因为用户自己写了有参构造方法之后,系
29、统将不再提供无参构造方法,但是init()缺省一定要调用无参的构造方法,init()找不到无参的构造方法,这样在运行时将会出错。左这种情况也是编译能够通过,但运行报错。提示:加载:无法实例化 Sample.class。将new Sample(a);去掉,将public Sample (String s)改成无参public Sample(),则先输出hahahah,再输出Hello World,可见无参构造方法自动调用且是先执行的=此程序则是编译错误!不是到运行是才有错误Second.java:7: cannot resolve symbolsymbol : constructor First ()location: class Firstpublic class Second extends First 如果要调用无参数的的构造方法(已经定义了一些有参的构造方法),那么必须显式的写出无参构造方法。public clas
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1