java基础加强
1.输入alt+/可以自动补充要输入的内容。相关设置可以在Eclipse的Preferences中进行修改。输入syso+alt+/ 可以直接生成System.out.println();
2.java透视图perspective. 视图view,透视图是多个视图的集合。
3.可以在eclipse的Preferences中设置java程序的javac编译环境,选择好之后程序就会按照你选择的jdk版本进行编译。如果要编译好的程序能正常运行,那么eclipse所使用的JRE应该是同等版本或者更高的版本。
4.Perferences-->java-->editor-->templates用来设置程序模板,这样可以方便对固定格式程序的编写。一般在surround with的选项中有相应的模板调用。
5.如果从外部得到一个工程文件,我们想在自己的eclipse中运行,首先将该文件夹拷到我们的workspace中(可以有多个workspace),然后在eclipse中引入该文件(Import),选Existing Projects into Workspace,然后添加相应的jar包后就可以运行了。
6.静态导入:import static java.lang.Math.max; import static java.lang.Math.*;导入静态方法。
7.可变参数:一个方法接受的参数个数不固定时,就要用到可变参数。
特点:只能出现在参数列表的最后;"..."位于变量类型和变量名之间,前后有无空格都可以;调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式方问可变参数。使用可变参数的求和运算:
public class VariableParameter {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Sum(1,2,3));
}
public static int Sum(int... args) {
int sum = 0;
for(int i=0;i<args.length;i++) {
sum = sum + args[i];
}
return sum;
}
}
8.自动装箱和自动拆箱,就是电脑自动将一个基本数据类型转换为一个对象,或者根据需要直接将一个对象转换为基本数据类型。
9.享元模式 flyweight。就是将系统中经常会重复使用的小对象用一个对象来表示,以节省内存空间。如果有很多小的对象,但它们有很多相同的东西,就可以把它们变成一个对象,不同的部分作为它的外部属性,作为方法的参数传入。那些相同的属性作为该对象的内部属性。
Integer i1 = 3;
Integer i2 = 3;//如果数据很小,一个字节,-128-127,那么系统会认为它很常用,所以
//就用一个对象来表示了。
System.out.println(i1==i2);//true
***************************************
Integer i1 = 300;
Integer i2 = 300;//如果数据较大,就会创建一个新的对象。
System.out.println(i1==i2);//false
10.枚举就是要让某个类型的变量的数值只能为若干个固定值中的一个,否则编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
普通类模拟枚举的编程实例:
package enumtest;
public class EnumTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Weekday w = Weekday.MON;
System.out.println(w.nextDay());
}
}
***************************
package enumtest;
public abstract class Weekday {
String name;
private Weekday(String name) {
this.name = name;
}
public final static Weekday SUN = new Weekday("SUN") {
public Weekday nextDay() {
return MON;
}
};
public final static Weekday MON = new Weekday("MON") {
public Weekday nextDay() {
return TUE;
}
};
public final static Weekday TUE = new Weekday("TUE") {
public Weekday nextDay() {
return WEN;
}
};
public final static Weekday WEN = new Weekday("WEN") {
public Weekday nextDay() {
return THU;
}
};
public final static Weekday THU = new Weekday("THU") {
public Weekday nextDay() {
return FRI;
}
};
public final static Weekday FRI = new Weekday("FRI") {
public Weekday nextDay() {
return SAT;
}
};
public final static Weekday SAT = new Weekday("SAT") {
public Weekday nextDay() {
return SUN;
}
};
public abstract Weekday nextDay();
public String toString() {
return this.name;
}
}
11.枚举只有一个成员时,就可以作为一种单例的实现方式。
枚举的拓展实现:
package trafficlights;
public class EnumTest {
public static void main(String[] args) {
}
public enum TrafficLights {
RED(30) {
@Override
public TrafficLights nextLight() {
// TODO Auto-generated method stub
return GREEN;
}
}, //RED,GREEN,YELLOW都是TrafficLights的子类,实现了nextLight方
//法,属于"类中类"中的匿名类!
//之所以说是匿名类,可以查看class文件,文件名中使用数字1,2,3来
//表示这些类名的,而不是RED,GREEN,YELLOW
//可见RED,GREEN,YELLOW并不是类名。
GREEN(45) {
@Override
public TrafficLights nextLight() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW(5) {
@Override
public TrafficLights nextLight() {
// TODO Auto-generated method stub
return RED;
}
};
int time = 0;
private TrafficLights(int time) {
this.time = time;
}
public abstract TrafficLights nextLight();
}
}
12. 反射的基石-->Class类
java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class。Class类的实例对象对应各个类在内存中的字节码。一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码。
得到字节码对应的实例对象(Class类型)有三种方法:
1)类名.Class,例如,System.class
2)对象.getClass(),例如,new Date().getClass()
3)Class.forName(类名),例如,Class.forName("java.util.Date");
13.有九个预定义Class实例对象:8个基本数据类型和一个void类型。
14.只要是在源程序中出现的类型,都有各自的Class实例对象,例如int[],void...
String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.println(cls1 == cls2);//true
System.out.println(cls1 == cls3);//true
System.out.println(cls1.isPrimitive());//false
System.out.println(int.class.isPrimitive());//true
System.out.println(int.class == Integer.class);//false
System.out.println(int.class == Integer.TYPE);//true
System.out.println(int[].class.isPrimitive());//false
System.out.println(int[].class.isArray());//true
15.反射就是把java类中的各种成分映射成相应的java类。例如,一个java类中用一个class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也是用一个个的java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息。这些信息就是用相应类的实例对象来表示,它们是Field,Method,Constructor,Package等等。
16.//通过构造函数来创建一个新的实例对象
Constructor constructor = String.class.getConstructor
(StringBuffer.class);
String str = (String)constructor.newInstance(new
StringBuffer("abc"));
System.out.println(str);
String str2 = String.class.newInstance();//Class类可以直
接创建一个无参的对象。
17.在命令行中输入nslookup,或者输入ipconfig /all就可以查看当前电脑的DNS地址。
本文介绍了Java编程的基础增强技巧,包括快捷输入、代码模板设置、工程文件导入、静态导入及可变参数使用等。同时深入探讨了自动装箱拆箱、享元模式、枚举类型、反射机制等内容,并附有实例说明。
1026

被折叠的 条评论
为什么被折叠?



