从零开始的"E"世界(J2SE)

JavaNote9

Java中的常用类(常用方法)

1. 系统相关的类
  • System:表示系统的意思.
public static void main(String[] args) {
        //数组拷贝操作
        //static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
        int[] src = {1,2,3,4,5,6};//原数组
        int[] dest = new int[10];//目标数组
        System.out.println(Arrays.toString(dest));//[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

        System.arraycopy(src, 1, dest, 6, 4);
        System.out.println(Arrays.toString(dest));//[0, 0, 0, 0, 0, 0, 2, 3, 4, 5]

        //static long currentTimeMillis() 返回以毫秒为单位的当前时间。
        long time = System.currentTimeMillis();
        System.out.println(time);//1502802226824

        //public static void exit(int status) 退出程序(JVM) 一般的,传入0表示正常结束,其他表示异常结束
        System.exit(0);
        System.out.println("ending........");

        //static void gc() 强制运行垃圾回收器
    }
  • Runtime:表示Java的运行过程.
    • 每一个java虚拟机都对应了一个Runtime类的实例

注意:通过观察源代码发现System类中的exit()gc()两个方法,底层都调用了Runtime的exit()和gc()方法.


2. 数学相关的三个常用类
  • Math:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数等,都是静态方法,使用不多.
//Math类中的常量和静态方法
public static void main(String[] args) {
        //static double PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值 
        System.out.println(Math.PI);//3.141592653589793

        System.out.println(Math.max(88, 66));//88

        //static double random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 [0.0, 1.0)---随机数
        double ret = Math.random();
        System.out.println((int)(ret * 100));//12
    }
  • BigDecimal:float和double都不能表示精确的小数,此时使用BigDecimal,用于处理金钱和精度要求高的数据.
public static void main(String[] args) {
        //使用double:结果不精确
        System.out.println(0.09 + 0.01);//0.09999999999999999
        System.out.println(1.0 - 0.33);//0.6699999999999999
        System.out.println(4.015 * 1000);//4014.9999999999995
        System.out.println(12.3 / 100);//0.12300000000000001

        System.out.println("------------");

        //使用BigDecimal:BigDecimal(double val)
        BigDecimal num1 = new BigDecimal(0.09);
        BigDecimal num2 = new BigDecimal(0.01);
        System.out.println(num1.add(num2));//0.09999999999999999687749774324174723005853593349456787109375

        //使用BigDecimal:BigDecimal(String val)--->通常建议优先使用 String 构造方法。 
        num1 = new BigDecimal("0.09");
        num2 = new BigDecimal("0.01");
        System.out.println(num1.add(num2));//0.10
    }
  • BigInteger:表示大整型,如果两个long类型的最大值相运算,结果long再也存储不下,此时使用BigInteger,一般不用.

3. 字符串
  • 字符串的分类
    • 不可变的字符串:String:当前对象创建完毕之后,该对象的内容(字符序列)是不能改变的,一旦内容改变就是一个新的对象.
    • 可变的字符串:StringBuilder/StringBuffer:当对象创建完毕之后,该对象的内容可以发生改变,当内容发生改变的时候,对象保持不变.

注意:字符串的本质:底层其实就是一个char[]

String类:
特点字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。

//String对象的创建
String s1 = "abc"; // s1 指向的内存中只有一个对象abc(常量池)。
String s2 = new String("abc"); // s2 指向的内容中有两个对象 abc(常量池)、new(堆) 。
//String对象的空值
String  str 1 = null;//没有初始化,没有分配内存空间.   
String  str2  = "";//已经初始化,分配内存空间,不过没有内容.

System.out.println(s1==s2);//false,"=="比较的是引用的内存地址是否相同.
System.out.println(s1.equals(s2));//true ,字符串中equals比较的是字符串内容是否相同

String类中的常用方法

1:String的创建和转换:
    byte[] getBytes():把字符串转换为byte数组
    char[] toCharArray():把字符串转换为char数组
    String(byte[] bytes):把byte数组转换为字符串
    String(char[] value):把char数组转换为字符串

2:获取字符串信息
    int length() 返回此字符串的长度 
    char charAt(int index) 返回指定索引处的 char 值 
    int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。 
    int lastIndexOf(String str)返回指定子字符串在此字符串中最右边出现处的索引 

3:字符串比较判断
    boolean equals(Object anObject) 将此字符串与指定的对象比较。 
    boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写
    boolean contentEquals(CharSequence cs) 将此字符串与指定的 CharSequence 比较(底层与equals相同)

4:字符串大小写转换
    String toUpperCase()  把当前字符串转换为大写(谁调用该方法,谁就是当前字符)
    String toLowerCase()  把当前字符串转换为小写

StringBuffer和StringBuilder

  • StringBuffer和StringBuilder 都表示可变的字符串,功能方法都是相同的.

  • StringBuffer和StringBuilder的区别:

    • StringBuffer: StringBuffer中的方法都使用了synchronized修饰符,表示同步的,在多线程并发的时候可以保证线程安全,保证线程安全的时候,性能(速度)较低.
    • StringBuilder:StringBuilder中的方法都没有使用了synchronized修饰符,不安全,但是性能较高.
常用方法:
append(Object val):表示追加任意类型数据
StringBuilder deleteCharAt(int index)  :删除字符串中,指定位置的字符

4. 随机数
  • Random类:用于生产一个伪随机数(通过相同的种子,产生的随机数是相同的)。
public static void main(String[] args) {
        Random r1 = new Random(10);
        System.out.println(r1.nextBoolean());//Boolean类型的随机数
        System.out.println(r1.nextDouble());//Double类型的随机数
        System.out.println(r1.nextInt());//Int类型的随机数
        System.out.println(r1.nextInt(20));//Int类型的随机数(0~20)

        System.out.println("------------");

        //生成34~179之间的随机数 ---> 34 + [0, 145)
        int num = new Random().nextInt(145) + 34;
        System.out.println(num);
    }
  • ThreadLocalRandom类:是Java7新增类,是Random类的子类,在多线程并发情况下,保证了线程的安全性。
public static void main(String[] args) {
        ThreadLocalRandom random = ThreadLocalRandom.current();
        System.out.println(random.nextInt(16));
        System.out.println(random.nextInt(34, 179));//直接生成[34, 179)之间的随机数
    }
  • UUID类:真正意义上的随机数(唯一)
public static void main(String[] args) {
        String uuid = UUID.randomUUID().toString();
        System.out.println(uuid);//b17a465e-aeee-4912-8269-c32675d6a69e
    }

5. 日期类
  • Date类: java.util.Date类,不是java.sql.Date.
public static void main(String[] args) {
        //创建Date对象
        Date date = new Date();
        System.out.println(date);//Tue Aug 22 11:06:09 CST 2017

        //public Date(long date)    long--->Date对象
        date = new Date(System.currentTimeMillis());
        System.out.println(date);//Tue Aug 22 11:06:09 CST 2017

        //Date对象--->long
        System.out.println(date.getTime());//long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
}
  • DateFormat/SimpleDateFormat类.

SimpleDateFormat类:是DateFormat的子类,支持自定义格式模式.(更强大)


public static void main(String[] args) throws ParseException {
        //自定义日期模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        //格式化(format):  Date类型对象------->String类型:                    
        String time = sdf.format(new java.util.Date());
        System.out.println(time);

        //解析(parse):     String类型时间------>Date类型
        //注意:使用什么风格格式化的,必须使用相同风格解析回去
        java.util.Date d = sdf.parse(time);
        System.out.println(d);
}
  • Calendar类.
    日历类(Calendar):是抽象类,表示日历,比Date更强大.
public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c);

        System.out.println("年:"+ c.get(Calendar.YEAR));
        System.out.println("月:"+ (c.get(Calendar.MONTH) + 1));
        System.out.println("日:"+ c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:"+ c.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:"+ c.get(Calendar.MINUTE));
        System.out.println("秒:"+ c.get(Calendar.SECOND));

        System.out.println("------------");

        //Calendar---->Date类型
        Date d = c.getTime();

        //void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 
        System.out.println("日:"+ c.get(Calendar.DAY_OF_MONTH));
        c.add(Calendar.DAY_OF_MONTH, 220);
        System.out.println(c.getTime().toLocaleString());
    }

6. 正则表达式

正则表达式(Regex)表示表达式正确的规则:
主要用于(匹配判断,分割操作,替换操作(网络爬虫(Lucene)))

public static void main(String[] args {
                                   System.out.println("123456".matches("\\d{5,10}"));//true(正则表达式)
        //判断手机号码
        String input = "18702823333";
        String regex = "^1[3|4|5|7|8]\\d{9}$";
        System.out.println(input.matches(regex));//true

        //验证邮箱
        regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
        System.out.println("9584acg@qq.com".matches(regex));
}

这里写图片描述
这里写图片描述

最后附上Java学习网址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值