主要是温习上学期的基础知识,不能前学后忘呵呵、
创建一个简单的窗体 1) import java.awt.*; import javax.swing.*; class hello extends JFrame { hello(){ setTitle("hello"); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args){ new hello(); } } 当然也可以使用另外一种不是很推荐的方法: import java.awt.*; import javax.swing.*; class hello { public static void main(String[] args) { JFrame frame= new JFrame(); frame.setSize(100,100); frame.setTitle("hello"); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 效果都如下所示: class hello { public static void main( String[] args ) { String[] he=new String[3]; he[0]="1"; he[1]="2"; he[2]="3"; for(String i : he){ System.out.println(i); } } } 输出结果:1 2 3 import javax.swing.*; public class hello { public static void main( String[] args ) { JOptionPane.showInputDialog("Rollen Holt"); JOptionPane.showMessageDialog(null, "Welcome"); } } import java.text.NumberFormat; public class hello { public static void main( String[] args ) { NumberFormat format1 = NumberFormat.getCurrencyInstance(); double a = 1000.1020; System.out.println(format1.format(a)); } } 输出结果:¥1,000.10 import java.math.*; public class hello { public static void main( String[] args ) { long a=10000000000000l; long b=20000000000000l; BigInteger A=BigInteger.valueOf(a); BigInteger B= BigInteger.valueOf(b); // 对于大树类 不能直接用加减乘除,只能采用函数调用的形式 BigInteger str=A.multiply(B); System.out.println(str); } } 输出的结果:200000000000000000000000000 // 对象的引用传递 1 class hello{ public static void main(String[] args){ String str="hello"; function(str); System.out.println(str); } private static void function(String str2){ str2="world"; } } 输出结果:hello (因为string类型是不可变的) 对象的引用传递2 // 对象的引用传递 2 class Demo { String str = "hello"; //注意这里是string类型,类类型 } public class hello { public static void main( String[] args ) { Demo demo = new Demo(); demo.str = "world"; System.out.println(demo.str); function(demo); System.out.println(demo.str); } static void function( Demo demo ) { demo.str = "Rollen"; } } 输出的结果是: world Rollen // 对象的引用传递 3 class Demo { int str = 1; // 这里是int类型,是基本类型 } public class hello { public static void main(String[] args) { Demo demo = new Demo(); demo.str = 2; System.out.println(demo.str); function(demo); System.out.println(demo.str); } static void function(Demo demo) { demo.str = 3; } } 输出的结果: 2 3 /** * @version 1.0 * @author Rollen-Holt 判断两个一般对象是否相等 * */ class hello{ hello(){ name = ""; age = 0; } hello(String name, int age){ this.age = age; this.name = name; } public boolean compare(hello he){ if (he == null) { return false; } if (he == this) { //如果两个对象在同一个地址的话,一定是相等的 return true; } // 否则的话,就要逐个比较内容了 if (this.name.equals(he.name) && (this.age == he.age)) { return true; } else { return false; } } public static void main(String[] args){ hello h1 = new hello("name1", 12); hello h2 = new hello("name2", 18); if (h1.compare(h2)) { System.out.println("equal"); } else { System.out.println("not equal"); } } private String name; private int age; } 输出的结果:not equal 有时候我们还需要在继承的情况下判断对象是否相等 /** * @author Rollen-Holt * 继承中的对象的比较 */ class Person{ Person(String name, int age){ this.age=age; this.name=name; } public boolean equals(Object obj){ if(obj==null){ return false; } if(this==obj){ return true; } if(!(obj instanceof Person)){ return false; } Person per =(Person)obj; if(this.name.equals(per.name)&&(this.age==per.age)){ return true; }else{ return false; } } public String toString(){ return this.name+" "+this.age; } private String name; private int age; } class hello{ public static void main(String[] a){ Person per1=new Person("Rollen",12); Person per2=new Person("Rollen",12); if(per1.equals(per2)){ System.out.println("equals"); }else{ System.out.println("Not equals"); } } } /** * @version 1.0 * @author Rollen-Holt 代码块的使用 * */ class hello{ static{ System.out.println("hello"); System.exit(1); } } /** * @version 1.0 * @author Rollen-Holt 代码块的使用,注意调用顺序 * */ class hello{ { // 普通代码块 System.out.println("普通代码块"); } static{ //静态代码块 System.out.println("静态代码块"); } hello(){ //构造代码块 System.out.println("构造代码块"); } public static void main(String[] a0){ hello he=new hello(); hello he1=new hello(); System.out.println("主函数"); } } 输出结果: 静态代码块 // 静态代码块指调用一次 普通代码块 构造代码块 普通代码块 构造代码块 主函数 /** * @version 1.0 * @author Rollen-Holt 使用static 定义内部类 ,但是静态内部类只能访问外部类的静态属性和方法 * */ class hello{ private static void say(){ System.out.print("hello"); } private void say1(){ System.out.print("hello1"); } static class inner{ void getSay(){ say(); } // void getSay1(){ // say1(); // } } public static void main(String[] a0){ new hello.inner().getSay(); //new hello.inner().getSay1(); // 静态内部类不能发访问外部类的非静态成员和方法 } } /** * @version 1.0 * @author Rollen-Holt * 继承中的方法重写的问题 * */ class Demo{ void say(){ System.out.println("Demo"); } } class hello extends Demo{ public void say(){ //注意这里的public,重写的时候访问权限不能小于原来的 System.out.println("hello"); } public static void main(String[] a0){ new hello().say(); } } /** * @author Rollen-Holt 在抽象类中定义构造方法 */ abstract class Demo{ public Demo(){ System.out.println("Demo"); } public void say(){ System.out.println("Rollen"); } } class hello extends Demo{ public void say(){ super.say(); System.out.println("Holt"); } public static void main(String[] a){ new hello().say(); } } 输出的结果: Demo Rollen Holt /** * @author Rollen-Holt this 关键字的使用 */ class hello{ hello(){ name = ""; age = 0; } // 此处使用this访问类属性 hello(String name, int age){ this.age = age; this.name = name; } // 此处使用this调用构造函数 hello(String name){ this(name, 0); } public String getName(){ return name; } public static void main(String[] a){ hello he = new hello("Holt"); System.out.println(he.getName()); } private int age; private String name; } 关于接口的一点点啰嗦: //接口中的方法必须是public。如果不写public的话,默认也是public的 interface A{ public static final String name="Rollen"; public abstract void say(); } 接口其实可、可以简写为下面的形式: interface A{ String name = "Rollen"; void say(); } /** * @author Rollen-Holt * 接口的一个例子 */ // 接口中的方法必须是public。如果不写public的话,默认也是public的 interface A{ String name = "Rollen"; void say(); } class hello implements A{ public static void main(String[] a){ new hello().say(); } @Override public void say(){ System.out.println(name); } } /** * @author Rollen-Holt * 对象的多态性 * 对象的向上传递 */ class Demo{ public void say(){ System.out.println("Rollen"); } } class hello extends Demo{ public void say(){ System.out.println("Holt"); } public static void main(String[] a){ hello he=new hello(); Demo demo=new Demo(); demo=he; demo.say(); } } 输出结果Holt /** * @author Rollen-Holt * 对象的多态性 * 对象的向下传递 */ class Demo{ public void say(){ System.out.println("Rollen"); } } class hello extends Demo{ public void say(){ System.out.println("Holt"); } public static void main(String[] a){ Demo demo=new hello(); //但是如果将上面的这句换为: Demo demo=new Demo(); //将会出现错误 hello he=(hello)demo; he.say(); } } 输出结果:Holt /** * @author Rollen-Holt */ // 在抽象类内部也可以定义多个抽象类或者是接口, //在接口的内部也可以定义多个接口或者是抽象类 abstract class A{ public abstract void sayA(); interface B{ public void sayB(); } } class X extends A{ public void sayA(){ System.out.println("A"); } class Y implements B{ public void sayB(){ System.out.println("B"); } } } class hello{ public static void main(String[] a){ A.B demo=new X().new Y(); demo.sayB(); } } /** * @author Rollen-Holt */ // 在抽象类内部也可以定义多个抽象类或者是接口, // 在接口的内部也可以定义多个接口或者是抽象类 /* * 在一个接口中实现抽象类 */ interface A{ public void sayA(); abstract class B{ public abstract void sayB(); } } class X implements A{ public void sayA(){ System.out.println("A"); } class Y extends B{ public void sayB(){ System.out.println("B"); } } } class hello{ public static void main(String[] a){ A.B demo =new X().new Y(); demo.sayB(); } } Object类提供的equals()方法默认是比较地址的。 /** * @author Rollen-Holt * 使用object 接收接口 */ interface A{ public void say(); } class B implements A{ public void say(){ System.out.println("A"); } } class hello{ public static void main(String[] args){ A a=new B(); Object obj=a; A demo=(A)obj; demo.say(); //输出A } } /* * 这个实例说明,虽然接口不能继承类,但是接口仍然是Object的子类。 * 因为接口本身就是引用数据类型 所以可以进行向上的转型操作 * */ /** * @author Rollen-Holt 使用object 接收数组 */ class hello{ public static void print(Object obj){ if (obj instanceof int[]) { int[] array = (int[]) obj; for(int temp : array) { System.out.println(temp + "\t"); } } } public static void main(String[] args){ int temp[] = { 1, 2, 3, 4, 5 }; Object obj = temp; print(obj); } } /* * Object 可以接受任何引用类型 */ 关于异常的一点点小解说: Exception在程序中必须使用try …catch语句进行处理 但是RuntimeException可以不使用try…catch进行处理,如果期间有异常产生,则直接提交到JVM 一点点小建议: 对于RuntimeException也使用try…catch语句进行处理 关于使用分别倒入和使用“*”导入那个效率高的问题: 其实效率是一样的,因为即使对于“*”导入的,也是程序自动加载的。而不需要的类不会被导入到程序。