JAVA特殊概念总结

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/sophies671207/article/details/79489936

这篇博文用来记录java相较于c/c++的新的概念和特性,个人对此的一点心得。
1.装箱
官方定义:由编译器特别支持的包称为装箱,当内置数据类型被当做对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也会把一个对象拆箱为内置类型

public class Test{
    Integer x=5;
    x=x+10;
    System.out.println(x);
}

心得小记
java中参与运算的基本都是实例化后的对象,类才能实例化对象,所以Integer应该作为一个类。编译器起到了将内置类型int转化为包装类Integer的功能。之后为了使x能够进行运算,编译器就可以把一个内置对象拆箱为内置类型。
2.java创建格式化字符串
输出格式化数字(%d等等类似的)可以使用printf()和format()方法,对于String类来说,使用静态方法format()返回一个String对象而不是PrintStream对象,因此String类的静态方法format()能够用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出

//打印输出的两种方式
//方式一
System.out.print("浮点型变量的值为%f",floatVar);
//方式二
String fs;
fs=String.format("浮点型变量的值为%f",floatVar1);

3. JAVA StringBuffer类和 JAVA StringBuilder类
操作字符串时需要用到这两个类,JAVA StringBuilder类有速度优势,但是需要保证线程安全时要用JAVA StringBuffer类

public class Test{
    StringBuffer sBuffer=new StringBuffer("Hello");
    sBuffer.append("world");
    System.out.println(sBuffer);
}

4.Java foreach循环
JDK1.5引进了一种新的循环,被称为foreach循环或加强型循环,能在不使用下标的情况下遍历数组

public class TestArray{
        public static void main(String[] args){
            double[] myList ={1,2,3,4,5};
            for (double  element:myList){
                System.out.println(element);
            }
        }
}

5.JAVA为二维数组 分配 空间
注意这里的分配方式是从高维开始,分别为每一维分配空间

String s[][]=new String[2][];
//为最高维分配引用空间,为最高维限制其能保存数据最长的长度
s[0]=new String[2];
s[1]=new String[3];
//为每个数组元素单独分配空间
s[0][0]=new String("good");
s[0][1]=new String("luck");

7.java异常处理
三种类型的异常:

  1. 检查性异常:最具代表性的异常是用户错误引起的异常。例如打开一个不存在的文件就会发生一个异常,这些异常在编译时不能被简单的忽略
  2. 运行时异常:运行时异常是可能被程序员避免的异常,是程序员无法忽视的,运行时异常可以在编译时被忽略
  3. 错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。如当栈溢出时就会发生错误在编译时检查不到

捕获异常

try{
//程序代码
}catch(ExceptionName e1)//catch语句要包含捕获异常类型的声明{
//Catch 块:当保护代码块中发生一个异常时,try后面的catch块就会被检查。如果发生的异常包含在该catch块中,异常会被传递到该catch块,类似于方法传参
}

多重捕获块
一个try代码块后面跟随多个catch代码块的情况即多重捕获

try{
//程序代码
}catch(异常类型1,异常变量1){
//程序代码
}catch(异常类型2,异常变量2){
//程序代码
}catch(异常类型3,异常变量3){
//程序代码
}

throws/throw关键字
如果一个方法没有捕获一个检查性异常,那么该方法必须使用throw关键字来声明,throw关键字放在方法签名的尾部。一个方法可以声明抛出多个异常。
finally关键字
finally关键字用来创建在try代码块后面执行的带妈妈快,无论是否发生异常,finally代码块后的代码总会被执行。finally代码块中可以运行清理类型等收尾善后性质的语句

try {//程序代码
}catch(异常类型 异常变量){
//程序代码}finally{
//程序代码}

声明自定义异常
在java中可以自定义异常。注意

  • 所有异常必须是Throw的子类
  • 检查性异常类需要继承自Exception类
  • 运行时异常类需要继承自RuntimeException类
  • 一个异常类和其他类一样,包含变量和方法
//例如
class MyException extends Exception{
}

java中定义了两种类型的异常和错误:

  • JVM(java虚拟机异常):由JVM抛出的异常或错误
  • 程序及异常:由程序或API程序抛出的异常
    8.java正则表达式
    不是很新但是有点特别:
    正则表达式可以通过匹配的方法搜索、编辑、处理文本。

    在其他语言,\仅表示插入一个特殊的反斜杠,
    在 java中,\表示后面要插入一个正则表达式的反斜线,因此其后的字符具有特殊的意义,比如\d代表一位数字

```java
//用正则表达式从一个给定的字符串中找到数字串
public class RegexMatches{
public static void main(String [] args){
//按照指定模式在字符串查找
    String line ="This order was placed for  QT3000!OK?"
    String pattern ="(\\D*)(\\d+)(.*)";
//创建pattern对象
Pattern r=Parttern.compile(pattern);
//创建matcher对象
Matcher m=r.matcher(line);
if(m.find()){
    System.out.println("Found value: "+m.group(0) );//group(0)代表整个字符串
    System.out.println("Found value: "+m.group(1) );//group(1)分组处理后的第一组
    System.out.println("Found value: "+m.group(2) );
    System.out.println("Found value: "+m.group(3) );    
}else{
    System.out,println("NO MATCH");
}
}
}

猜你喜欢

转载自blog.csdn.net/sophies671207/article/details/79489936
今日推荐