java基础加强--要点总结1

本文介绍了Java编程的基础增强技巧,包括快捷输入、代码模板设置、工程文件导入、静态导入及可变参数使用等。同时深入探讨了自动装箱拆箱、享元模式、枚举类型、反射机制等内容,并附有实例说明。

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地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值