自学内容网 自学内容网

Java面向对象之常用类

异常

异常处理机制tryresouce
JDK1.7新特性,自动关闭资源。
格式:
try(对象)
{
有运行时异常的代码;
}
备注:使用这种异常处理机制,被处理的对象所属的类一定要实现了AutoCloseable 接口 ,并重写close()方法
package com.wlx.day85;

public class MyIOClass implements AutoCloseable
{

public  void  hello()throws RuntimeException
{
    System.out.println("MyIOClass---");
}


public  void  close()
{
    System.out.println("正在关闭资源...");
}

}

package com.wlx.day85;

public class MyIOClassTesting2
{
public static void main(String[] args)
{
//能够自动关闭资源的异常处理方法,此处的对象所属的类必须要实现AutoCloseable接口
try(MyIOClass myIOClass = new MyIOClass())
{
myIOClass.hello();
}

}

}

常用类

1.1、String
Java中所有使用双引号的都是String的实例对象,所有使用单引号的都是char类型。
将基本数据类转换成字符串的方法valueOf(),该方法是一个String类中的静态工厂方法。
String对象的操作,每次都是在新的字符串对象上进行操作的。
package com.wlx.day85;

import java.util.Arrays;

public class StringDemo
{

/**
 * 1、遍历字符串
 */
public  void  blString()
{
    String  s = "helloworld";
    for(int i = 0;i < s.length();i++)
    {
        System.out.println(s.charAt(i));
    }
}

/**
 * 2、将指定的字符串"hello"转换成大写
 */
public void upperCase()
{
    String s = "hello";
    System.out.println(s.toUpperCase());
}
/**
 * 3、将指定的字符串"HELLO"转换成小写
 */
public void lowerCase()
{
    String s = "HELLO";
    System.out.println(s.toLowerCase());
}

/**
 * 4、查询指定字符串"helloworldnihaomawohenhao"中第一次出现o的位置
 */
public  void  indexOf()
{
    String s = "helloworldnihaomawohenhao";
    System.out.println(s.indexOf("q"));
}
/**
 * 5、查询指定字符串"helloworldnihaomawohenhao"中最后一次出现o的位置
 */
public  void  lastIndexOf()
{
    String s = "helloworldnihaomawohenhao";
    System.out.println(s.lastIndexOf("o"));
}


/**
 * 6、使用正则表达式判断身份证号码的格式是否正确。
 */
public  void  regex()
{
    String s = "123456789012345678";
    //^\d{18}$表示从字符串开头开始到结尾结束,所有的数据都是数字,并且是18位数字
    if(s.matches("^\\d{18}||\\d{17}x$"))
    {
        System.out.println("身份证号码格式符合要求");
    }
    else
    {
        System.out.println("身份证号码格式  不  符合要求");
    }

}

/**
 * 7、判断一个字符串是否以"mysql"开头
 */
public void  start()
{
    String s = "mysqlaaaa.java";
    System.out.println(s.startsWith("mysql"));
}

/**
 * 8、判断一个字符串是否以".java"结尾
 */
public void  end()
{
    String s = "mysqlaaaa.java";
    System.out.println(s.endsWith(".java"));
}

/**
 * 9、将IP地址"192.168.6.26"处理成
 *   192
 *   168
 *   6
 *   26
 */
public void  split()
{
    String s = "192.168.6.26";
    String[] str = s.split("\\.");
    for(int i = 0;i < str.length;i++)
    {
        System.out.println(str[i]);
    }
}

/**
 * 10、将指定字符串"       hello    world      "首尾的空格去掉
 */
public void trim()
{
    String s = "       hello    world      ";
    System.out.println("s --- "+s);
    System.out.println(s.trim());
}

/**
 * 11、将字符串转换成byte[]
 */
public  void  byteDemo()
{
    String s = "abc";
    byte[] b = s.getBytes();
    System.out.println(Arrays.toString(b));

}

/**
 * 12、将byte数组转换成字符串
 */
public  void  byteStr()
{
    byte[] b = {97, 98, 99};
    String s = new String(b);
    System.out.println(s);
}

/**
 * 13、获取字符串"helloworldnihaomawohenhao"中的"nihaoma"字符串数据
 */
public void subString()
{
    String s = "helloworldnihaomawohenhao";
    String st = s.substring(10,17);
    System.out.println(st);
}

public static void main(String[] args)
{
    StringDemo sd = new StringDemo();

// sd.blString();
// sd.indexOf();
// sd.lastIndexOf();
// sd.regex();
// sd.start();
// sd.split();
// sd.trim();
// sd.byteDemo();
// sd.byteStr();
sd.subString();
}

}

1.2、StringBuilder

StringBuilder在操作字符串时,都是在原来字符串的基础上进行操作的。
package com.wlx.day85;

public class StringBuilderDemo
{

/**
 * StringBuilder练习:
 * 定义一个字符串"下周有活动是吗",在该字符串的基础进行修改,修改后的数据是"你确定下周有活动是吗",
 * 继续修改为"你确定下周有活动是吗?反正我不确定。",再次修改为"下周有活动?我不确定!"。
 * @param args
 */
public static void main(String[] args)
{
    String s = "下周有活动是吗";
    //创建字符串缓冲区对象
    StringBuilder  sb = new StringBuilder(s);
    //向下标为0处插入字符串
    sb.insert(0,"你确定");
    //在上面字符的基础上,追加"?反正我不确定。"
    sb.append("?反正我不确定。");
    //在上面字符的基础上,将下标为0处(包含)到下标为3处(不包含)的字符串删除
    sb.delete(0,3);
    //在上面字符的基础上,将下标为5处(包含)到下标为7处(不包含)的字符串删除
    sb.delete(5,7);
    //在上面字符的基础上,将下标为6处(包含)到下标为8处(不包含)的字符串删除
    sb.delete(6,8);
    //将上面字符串中下标从10开始(包含)到下标为11处(不包含)的句号替换为感叹号!
    sb.replace(10,11,"!");
    System.out.println(sb);


}

}

1.3、String与StringBuilder/StringBuffer区别

1、String不可变的,而StringBuilder是可变的
2、String是可以使用连接符进行链接的,而StringBuilder无法使用连接符进行链接。
3、String和StringBuilder中都重写了Object中的toString(),String中的toString()是打印的当前String对象本身,是一个新的对象;而StringBuilder的toString()是打印原来的StringBuilder对象,不会产生新的对象。
4、String和StringBuilder中虽然有一些方法同名,但是最终的作用有所区别,区别在String操作的是新String对象的内容,而StringBuilder还是原来的。
5、StringBuilder与StringBuffer的区别是,StringBuffer是线程同步的,而StringBuilder则不是线程同步的,推荐使用StringBuilder。

1.4、Math

package com.wlx.day85;

public class MathDemo
{
/**
* Math练习:
* 1、对指定数值或变量进行立方计算。Math.pow(a,3)
* 2、获取比数值123.40的大的整数值 ceil()
* 3、获取比数值123.40的小的整数值 floor()
* 4、对数值123.567进行四舍五入 round()
* 5、随机产生一个10以内的整数值 (int)(random()*10)
* @param args
*/
public static void main(String[] args) {

    int a = 2;
    System.out.println(Math.pow(a, 3));//8.0
    //获取比123.40大的整数值,由于返回的是double类型的数据,因此结果是124.0
    System.out.println(Math.ceil(123.40));//124.0
    //获取比123.40小的整数值,由于返回的是double类型的数据,因此结果是123.0
    System.out.println(Math.floor(123.40));//123.0
    //在123.567基础上加上0.5取整
    System.out.println(Math.round(123.567));//124
    //5、随机产生一个10以内的整数值
    System.out.println((int)(Math.random()*10));
}

}

1.5、Random

package com.wlx.day85;

import java.util.Random;

public class RandomDemo
{
public static void main(String[] args) {

    //使用Random随机产生一个10以内容的整数值
    Random  random = new Random();
    int num = (int)(random.nextDouble()*10);
    System.out.println(num);

}

}

1.6、UUID

该UUID在web部分会产生sessionid的值,生产过程当前会以UUID的形式作为主键使用。
package com.wlx.day85;

import java.util.UUID;

public class UUIDDemo
{
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
//将UUID的字符串数据中的减号替换为空字符串
System.out.println(uuid.toString().replace(“-”,“”));

}

}

1.7、Object

Object是所有被class修饰的类的超类/父类,即默认继承Object ,所有class类和数组中都有Object的非私有的方法。
当打印一个对象时,默认调用的是这个对象继承的Object中的toString()方法,所以如果要打印一个对象中的详细信息,可以根据自己的需要重写toString()。
被克隆的对象所属的类,一定要实现Cloneable接口,否则会出现CloneNotSupportedException。
要想实现深克隆,请重写Object类中的clone()方法,为每个属性重新分配内存即可。

1.7.1、==和equals()

==比较基本数据类型时,比较的是值是否相等;比较引用数据类型时,比较的是内存地址是否相等,如果相等则认为两个引用数据类型是同一个,否则不是同一个。
equals() Object类中的equals()方法比较还是内存地址是否相等,String中的equals()方法比较的是内容是否相等,其他类中的要根据重写Object类中的toString()方法的算法而定,一般情况下,重写以后都是比较内容是否相等。


原文地址:https://blog.csdn.net/HTDiiii/article/details/140619072

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!