java复习【笔试可能常见】

  • String的装箱拆箱
String str1 ="abc";
           String str2 ="abc";
           System.out.println(str2==str1);  //输出为 true 
System.out.println(str2.equals(str1));  //输出为 true 
            
           String str3 =new String("abc");
           String str4 =new String("abc"); 
           System.out.println(str3==str4);  //输出为 false 
System.out.println(str3.equals(str4));  //输出为 true
String d ="2"; 
2 String e ="23";
3 e = e.substring(0, 1);
4 System.out.println(e.equals(d)); //输出为 true 
5 System.out.println(e==d); //输出为 false


public enum Data
{
INTEGER("Integer"), STRING("String"), LONG("Long"), BYTE("Byte");
private String type;

private Data(String type)
{
this.type = type;
}
}

特性:不可继承的final类,构造方法只能是私有构造方法

继承的Enum类的方法

 (1)  ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。
                 Color.RED.ordinal();  //返回结果:0
                 Color.BLUE.ordinal();  //返回结果:1
       (2)  compareTo()方法: 比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。
                 Color.RED.compareTo(Color.BLUE);  //返回结果 -1
       (3)  values()方法: 静态方法,返回一个包含全部枚举值的数组。
                 Color[] colors=Color.values();
                 for(Color c:colors){
                        System.out.print(c+","); 
                 }//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
       (4)  toString()方法: 返回枚举常量的名称。
                 Color c=Color.RED;
                 System.out.println(c);//返回结果: RED
       (5)  valueOf()方法:得到枚举常量。
                 Color.valueOf("BLUE");   //返回结果: Color.BLUE
       (6)  equals()方法: 比较两个枚举类对象的引用。

可根据valueOf和switch得到所想要的枚举值

 【java常用类】

String没有Insert方法,也没有delete方法虽然和subString很像,字符串常量是编译器可以设置成共享的【对项目来讲并没有什么用处】

RunTime类

Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够
与其运行的环境相连接。一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类
实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。 一旦得到了一个当前的
Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
常见的应用有 1:执行外部程序(调用外部命令) 举例:用java调用外部mcl数据分析工具(之前我已经把mcl安装的bin目录导入到了PATH中) String [] cmd={"cmd","/C","mcl D:\input.txt --abc -o D:\output.txt -I 1 -scheme 7"}; Process proc =Runtime.getRuntime().exec(cmd);
注意目录中用“\”代替""。 如果外部命令过于复杂可以自己写一个bat或shell脚本然后调用 如下 String [] cmd={"cmd","/C","E:\test3.bat"}; Process proc =Runtime.getRuntime().exec(cmd);
下面对Runtime.exec()做个总结
 

Windows下调用系统命令

String [] cmd={"cmd","/C","copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Linux下调用系统命令就要改成下面的格式

String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Windows下调用系统命令并弹出命令行窗口

String [] cmd={"cmd","/C","start copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

Linux下调用系统命令并弹出终端窗口就要改成下面的格式

String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);

还有要设置调用程序的工作目录就要

Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"));
2:内存管理
Java提供了无用单元自动收集机制。通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。
Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。但是如果想先于收集器的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。
一个很好的试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。

 得到的freeMemory是根本就没法通过创建的对象大小具体算出,只能通过前后相减得到

Runtime run = Runtime.getRuntime() ; // 取得Runtime类的实例化对象
Process p = null ; // 定义进程变量
try{
p = run.exec("notepad.exe") ; // 调用本机程序,此方法需要异常处理
}catch(Exception e){
e.printStackTrace() ; // 打印异常信息
// System.out.println(e) ;
}
try{
Thread.sleep(5000) ; // 让此线程存活5秒
}catch(Exception e){
}
p.destroy() ; // 结束此进程
}

java国际化

Locale zhLoc = new Locale("zh","CN") ;        // 表示中国地区
        Locale enLoc = new Locale("en","US") ;        // 表示美国地区
        Locale frLoc = new Locale("fr","FR") ;        // 表示法国地区
        // 找到中文的属性文件,需要指定中文的Locale对象
        ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
        // 找到英文的属性文件,需要指定英文的Locale对象
        ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc) ;
        // 找到法文的属性文件,需要指定法文的Locale对象
        ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc) ;
        // 依次读取各个属性文件的内容,通过键值读取,此时的键值名称统一为info
        String str1 = zhrb.getString("info") ;
        String str2 = enrb.getString("info") ;
        String str3 = frrb.getString("info") ;
        System.out.println("中文:" + MessageFormat.format(str1,"李兴华")) ;
        System.out.println("英语:" + MessageFormat.format(str2,"LiXingHua")) ;
        System.out.println("法语:" + MessageFormat.format(str3,"LiXingHua")) ;

国际化获得配置文件的,不使用Properties

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。【月份要+1】  

clone

class Employee implements Cloneable

{
public Object clone() throws CloneNotSupportedException
{
Employee cloned = (Employee) super.clone();
cloned.hireDay = (Date) hireDay.clone()
return cloned;
}
}

正则表达式:

字符串的split是根据正则表达式去分割,而Pattern执行compile实例化正则表达式,然后spilt所需要的字符串

得到的字符串可根据Arrays工具类的equals方法判断数组是否相等!

原文地址:https://www.cnblogs.com/chenxuezhouLearnProgram/p/5712630.html