java

位置:IT落伍者 >> java >> 浏览文章

java高级技术总结 1


发布日期:2020年08月30日
 
java高级技术总结 1
eclipse 大型开发的集成软件应用最广安装myeclipse之后功能更强主要有工作区工程两个概念

工程将很多有关联的java文件放到同一个工程中这样这些java文件就可以同时执行大大提高效率

同时应该多主要eclipse的开发小技巧可以大大节省时间

静态导入

import static javalangMath*;这样就可以直接调用Math中的静态方法如max(如果不导入就要写成Mathmax(

高级for循环

for(Object obj : array) { 代码块}

其中array为Object类型数组或者集合这样就可以实现数组或集合的遍历

枚举(enum)

可以看成一个包含很多元素的类如public enum WeekDay{ SUNMONTUE}

对于其中元素可以直接引用WeekDaySUN

几个重点方法WeekDayvalueOf(SUN)就是获得一个WeekDay元素实例SUN

***枚举类中构造方法必须private化所以可用于单例设计模式

可变参数(jdk新特性重点)

public static int plus (int xint … args) //加…表示不确定

{

int sum = ;

for(i=;i<argslength;i++) //参数被放入数组中

{

sum+=args[i];

}

return sum;

}

这样就可以随便调用了plus(plus()……都可以

基本数据的知道装修及拆箱(jdk新特性)

Integer i = ;

实际上执行上面那句代码的时候系统为我们执行了Integer i = new Integer( 此即基本数据类型的自动装箱

享源模式运用共享技术有效地支持大量细粒度的对象

概念也就是说在一个系统中如果有多个相同的对象那么只共享一份就可以了不必每个都去实例化一个对象比如说一个文本系统每个字母定一个对象那么大小写字母一共就是那么就要定义个对象如果有一个M的文本那么字母是何其的多如果每个字母都定义一个对象那么内存早就爆了那么如果要是每个字母都共享一个对象那么就大大节约了资源

在Flyweight模式中由于要产生各种各样的对象所以在Flyweight(享元)模式中常出现Factory模式Flyweight的内部状态是用来共享的Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象Flyweight模式是一个提高程序效率和性能的模式会大大加快程序的运行速度应用场合很多

反射

实质把类中各成分映射成相应java类如成员变量成员方法构造方法main方法

用Class类来代指这类事物主要与class的区别class只是一个修饰语Class就是具体的类本质是字节码

获取Class字节码的方法

类名class如intclassStringclassIntegerclass

getClass() 如String str = asd; strgetClass()

ClassforName(类名

Class的几个重要方法isPrimitive()是否为基本数据类型

构造方法的反射getConstructor(parameter(typeclass) ; getConstructors()(获得的是构造方法数组)

Constructor constructor = StringclassgetConstructor(StringBufferclass)

String str = (String)connstructornewInstance(new StringBuffer(ades))

其中newInstance(parametertype)是最重要的方法可以直接获得所属类的实例对象

成员变量的反射Field:

class Point p {int x=;int y =;}

Field fieldx = pgetClass()getField(x

Systemoutprintln(fieldxget(p)) 即可得到p中x的值

成员方法的反射

必须导入javalangreflect*;包治好才能使用

String str = dafsf

Method methodCharAt = StringclassgetMethod(charAtintclass)

Systemoutprintln(methodCharAtinvoke(str))

方法的反射是最能 体现反射的意思的即以方法为中心原来作用的类和参数都作为该方法的参数

main方法的反射

package combaiduexam;

import javalangreflectMethod;

class Point {

public static void main(String[]args)throws Exception

{

String name = args[];

Method mainMethod = ClassforName(name)getMethod(main String[]class)

mainMethodinvoke(null (Object)new String[]{eAWDRrgsfegs}) //此时强制转换特别重要

}

}

class Hello

{

public static void main(String[]args) {

for(String str:args){

Systemoutprintln(str)

}

}

}

将main方法发射的实例

数组的反射

有一个关于数组反射的工具类Array在javalangreflect包中

关键方法Arrayget(Object [] obj int i)得到obj数组中第i个元素i的值

               

上一篇:Java发邮件带附件测试通过

下一篇:如何有效防止Java程序源码被人偷窥?