java-常用API

一.object类
Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法。
方法:
equals:比较地址的
Object中的equals实现用==
1.判断是否是当前的类型(的子类)
2.强转
3.根据自己的意愿比较
==:比较值(栈中所存放的)
toString: 看看当前对象的属性(自动调用),不重写的时候:完整的类名@哈希码值
hashCode:返回对象的哈希码值,每个对象的哈希码值是不相同的
getClass:获取当前运行时候的类
finalize:垃圾回收机制,自动调用
线程:wait/notify(唤醒一个在这个对象的监视器上等待的单个线程。)

public class TestObject {
    int age;
    String name;
/*  @Override
    public boolean equals(Object obj) {
        //地址相同
        if (this == obj)
            return true;
        //null
        if (obj == null)
            return false;
        //类
        if (getClass() != obj.getClass())
            return false;

        TestObject other = (TestObject) obj;
        if (a != other.a)
            return false;
        return true;
    }*/
    public static void main(String[] args) {
        /**
         * 存储任意的10个对象
         */
        Object  []   tens = new Object[10];
        int [] a = new int[3];
        tens [0] = new Date();//多态
        tens [1] = new Scanner(System.in);
        tens[2] = a;
        print(tens[0]);

        tens[3] = new Date();

        //获取当前运行的TextObject的类对象
        Class c = new TestObject().getClass();
        System.out.println(c);
        int num1 = new TestObject().hashCode();
        int num2 = new TestObject().hashCode();
        System.out.println(num1+"   "+num2);
        int num3 = "你".hashCode();
        int num4 = "你".hashCode();
        System.out.println(num3+"   "+num4);

    }

    //A?B:C
    /**
     * 用户根据自己的需求进行比较2个对象,重写了hashcode
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        TestObject other = (TestObject) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
    /**
     * 方法:传入一个对象,获取对象的地址
     */
    public static void print(Object obj){
        System.out.println(obj);
    }

    /**
     * 方法:传入一个数字,1:返回时间   2  返回Scanner
     */

    public static Object a(int num ){
        if(num==1){
            return new Date();
        }else{
            return new Scanner(System.in);
        }
    }



}

二.String
1.String(不可变字符序列)
1.1三种构造方法

        String str1 = new String();
        String str2 = new String("你好!4");
        char [] a = {'你','好','!'};
        //通过字符数组
        String str3 = new String(a,0,3);//String的构造方法
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        结果:
(此处为空)
你好!4
你好!

设置字符为GBK的格式
//获取字符串的字节数组(GBK格式)
byte [] b = “你好!”.getBytes(“GBK”);
String str4 = new String(b,0,b.length);
System.out.println(str4);
//通过构造函数创建GBK格式的字符串
String str5 = new String(b,”GBK”);
System.out.println(str5);
结果:
你好!
你好!

1.2charAt(int index):获取指定下标字符串的字符
length():获取字符串的长度

String str5 = new String(b,"GBK");
        System.out.println(str5);
        String str6 = "今天的天气挺好的,温度适宜";
        char c = str6.charAt(3);//0----
        int len = str6.length();
        System.out.println(c+"   "+len);
结果:天   13
//获取字符串的每一个字符
for (int i = 0; i < str6.length(); i++) {
    System.out.println(str6.charAt(i));
    }

1.3compareTo();比较返回int类型 正数,负数,0

        int num = str2.compareTo(str5);
        System.out.println(num);

1.4concat():拼接字符串

        str2.concat("拼接字符串");  //你好!4拼接字符串
        System.out.println(str2);

1.5contains():是否包含

        //是否包含
        boolean flag = str2.contains("你好");
        System.out.println(flag);

1.6endswith():以什么结尾,过滤

        String strFile = "a.txt";
        //以什么结尾:过滤
        if(strFile.endsWith(".java")){
            System.out.println("这是一个java文件");
        }else{
            System.out.println("这不是java文件");
        }

1.7indexof():从左往右字符串的位置,第一次出现

1.public int indexOf(String str)
        //str6="今天的天气挺好的,温度适宜"
        int index  = str6.indexOf('你');//自动转换
        System.out.println(index); //-1 (没有这个)
        index = str6.indexOf("挺好的");//按着第一个字符出现的索引“挺”为5
        index = str6.indexOf('天');//1,第一个字符(天)
2.public int indexOf(int ch,int fromIndex)
index = str6.indexOf('天',2);//从第二个天开始,返回值为3

1.8lastindexof():从右往左

index = str6.lastIndexOf('天');//只是寻找方式变了,结果也为3

1.9isEmpty

        flag  = str2.isEmpty();
        System.out.println(flag);

2.0 trim:之去除字符串首和尾的所有空格,字符串中间的去除不了

        str8 = "    你好          ";
        str8 = str8.trim()+1;
        System.out.println(str8);

2.1 split:以“ ”分割

        String str8 =   "1332456789@qq.com";
        String [] arrStr = str8.split("@");
        for (int i = 0; i < arrStr.length; i++) {
            System.out.println("arrStr["+i+"]="+arrStr[i]);
        }

        str8 = "abccbacd";
        arrStr = str8.split("a");
        for (int i = 0; i < arrStr.length; i++) {
            System.out.println("arrStr["+i+"]="+arrStr[i]);
        }

2.2replace:用新的替换旧的

public String replace(char oldChar, char newChar)
        str6 = str6.replace('天', '地');
        System.out.println(str6);//今地的地气挺好的,温度适宜

2.3replaceAll

public String replaceAll(String regex,String replacement)
    String str7 = "13302341587";//133****1587
    str7 = str7.replaceAll("\\d{3}", "哈哈");//每三个数字替换,\转移字符
    System.out.println(str7);//哈哈哈哈哈哈87

2.4matches

    str1 = "1";
    flag = str1.matches("[a-zA-Z]");
    System.out.println(flag);//false

    //简单匹配一个字符串判断他是否是手机号
    str1.matches("[0-9]{11}");
    //匹配一个QQ邮箱   前面数字 [5-10]   @  qq.com
    str1.matches("[0-9]{5,10}@qq.com");

2.5正则表达式:Class Pattern类中

正则表达式

描述:正则表达式是一串特定的字符,组成一个“规则字符串“,这个规则字符串是描述文本规则的工具,正则表达式就是记录文本规则的代码。

例如:正则式“[a-z]”表示a到z的任意一俄国字符,正则表达式“[a-z]+”表示有一个或多个字符串组成的字符串。

正则式既然是一种字符串组合的规则,那么我们就可以按着规则组合自己想要的正则式。


[]:代表可以出现一个字符

[abc]这个字符可以是a或b或c

[^abc]不能是a或b或c的其他字符

[a-z]这个字符只能是小写字母

[a-zA-Z0-9]可以是字母或数字

[a-z&&[^bc]]是小写字母但不能是b或c

. :任意一个字符

\d:任一一个数字,等同[0-9]

\D:任一一个非数字字符,

等同[^0-9]

\s:任一一个空白字符

\S:非空白字符

\w:单词字符 [0-9a-zA-Z_]

\W:非单词字符[^\w]


量词:

?:表示0-1次

[\w]?:表示0或1个单词字符

[\w][\w]?:表示1或2个单词字符


*:表示0-无穷次

[\d]*:任意次数字

[\d][\d]*:至少一次


+:表示1-无穷次

[\d]+:至少一个数字


{n}:n次.n只能是数字

[\d]{11}:11次数字


{n,}:n次以上

{n,m}:n到m次

[\d]{3,5}:3-5位的数字


():将内容看作一个整体

(abcd):要出现一个abcd

(abcd)+:至少一次abcd

()中可以使用或关系。在几个整体中选其一

(138|135|130):是138或135或130


下面列出常见的正则式:

[abc] a,b,c中任意一个字符

[^abc] 除了a,b,c任意一个字符

[a-z] a~z的任意一个字符

[a-zA-Z0-9] a~z,A~Z,0~9中任意一个字符

[a-z&&[^bc]] a~z中除了b,c以外任意一个字符,其中&&表示“与”的关系。


. 任意一个字符

\d 任意一个数字字符,相当于[0-9]

\D 任意一个非数字字符,相当于[^0-9]

\s 空白字符,相当于[\t\n\x0B\f\r]

\S 非空白字符,[^\s]

\w 任意一个单词字符,[a-zA-Z_0-9]

\W 任意一个非单词字符,[^\w]


X? 表示0个或1个X

X* 表示0个或任意多个X

X+ 表示0到任意多个X(大于等于1个X)

X[n] 表示n个X

X[n,] 表示n到任意多个X(大于等于n个X)

X[n,m] 表示n个到m个X(大于等于n个且小于m个X)

2.6valueof(返回为string的形式)
三system/Stringbuilder/StringBuffer
1. StringBuilder:可变字符序列:final 线程不安全 速度快,3个构造方法
StringBuffer: 可变字符序列: final 线程安全 速度慢
这两个的区别在于StringBuffer的方法多一个synchronized
1.1)Stringbuilder(构造方法)

StringBuilder() 
构造一个没有字符的字符串生成器,并构造了16个字符的初始容量。  
StringBuilder(CharSequence seq) 
构建一个包含指定的 CharSequence相同字符的字符串生成器。  
StringBuilder(int capacity) 
构造一个字符串生成器没有字符和一个初始容量的 capacity参数指定。  
StringBuilder(String str) 
构造一个初始化为指定字符串的内容的字符串生成器。 

1.2)append/toString/insert/delete/reverse

        StringBuilder builder = new StringBuilder();//字符数组的大小:16
        builder = new StringBuilder(3);//字符数组的大小是:3
        builder = new StringBuilder("哈哈哈哈");//字符数字的长度:字符串的大小+16
        builder.append(true).append(12).append(new Date()).append("哈哈");
        System.out.println(builder.toString());
        builder.insert(4, "INSERT");
        System.out.println(builder);
        builder.delete(4, 10);//包头不包尾
        System.out.println(builder);
        builder.reverse();//反转数组
        System.out.println(builder);

2.system类
system流:(err/out/in)
system.exit:终止当前正在运行的java虚拟机
system.gc:运行垃圾收集器。(手动垃圾回收机制)
runFinalization :运行任何对象待定型的定型方法。
getProperties() :确定当前系统属性
getProperty(String key) :获取指定的键指示的系统属性。
currentTimeMillis()//返回当现在为止的毫秒值
public static void arraycopy(Object src, int srcPos,Object dest, int destPos,int length)//数组复制

src -源阵列。 
srcPos -源数组中的起始位置。 
dest -目标数组。 
destPos在目标数据的起始位置。 
length -数组元素的数目被复制。

四.Math
ceil(大于/等于某数的最小整数)
floor(返回小于/等于某数的最大整数)
Max/min
random(大于或等于0.0到小于1.0之间)
sqrt()//开平方,获取正数

public class TestMath {

    public static void main(String[] args) {
        //大于等于-12.9的最小整数-12.0
        double num = Math.ceil(-12.9);
        System.out.println(num);

        //小于等于-12.9的最大整数-13.0
        num = Math.floor(-12.9);
        System.out.println(num);


        int num1 = Math.max(-10,10);
        num1 = Math.min(-10,10);
        System.out.println(num1);

        //开10的平方,获取那个正数
        num = Math.sqrt(10);
        System.out.println(num);

        //0.0----1.0的随机数
        Math.random();
    }

}

五.Number类
抽象类是平台类 Number表示数值转换为原始类型 byte, double, float, int, long,和 short父类。从一个特定的 Number实现数值给定的原始类型转换的具体语义是由实现定义的 Number问题。
抽象类
大数据类:BigInter/BigDecimal

import java.math.BigInteger;

public class TestBig {

    public static void main(String[] args) {
        BigInteger bi = new BigInteger("-1233");
        bi = bi.abs();
        System.out.println(bi);

        double num = bi.doubleValue();
        System.out.println(num+1);
    }

}

六.Runtime:当前运行的对象
七.Date:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Date_Test {

    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
        //获取当前时间
        Date  date=new Date();
        System.out.println(date.toLocaleString());//本地时间
        System.out.println(date.toGMTString());//格林时间
        System.out.println(date.toString());
        //获取年月日:时分秒
        System.out.println("年:"+(date.getYear()+1900));//此处需要加上1900
        System.out.println("月:"+(date.getMonth()+1));//(getMonth:从0-11需要加一)
        System.out.println("星期:"+(date.getDay()));//getDay(为星期几)
        System.out.println("日:"+(date.getDate()));//获取日
        System.out.println("时"+(date.getHours()));//时
        System.out.println("分"+(date.getMinutes()));//分
        System.out.println("秒"+(date.getSeconds()));//秒
        System.out.println(date.getTime());//获取从1970年1月1日开始的毫秒值
        System.out.println(date.getTimezoneOffset());//时区偏移,在几分钟内,用于当前时区。c

        //格式化
        SimpleDateFormat  format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //data---字符串
        String val=format.format(date);
        System.out.println(val);
        //字符串转换成data
        String str1="2017-1-10 09:3:5";
        System.out.println(format.parse(str1));
    }

}

八.Format类
1.SimpleDateFormat:格式化
//parse表示(由string类型的转换成想要格式化的类型),
//format表示(由想要格式化的类型转换成string类型),

public class Date_Test {

    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
        //获取当前时间
        Date  date=new Date();
        //格式化
        SimpleDateFormat  format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //data---字符串
        String val=format.format(date);
        System.out.println(val);
        //字符串转换成data
        String str1="2017-1-10 09:3:5";
        System.out.println(format.parse(str1));
    }

}

2.NumberFormat类

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;

public class NumberFormat_Test {

    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
        NumberFormat numberFormat=new DecimalFormat("0.00%");//DecimaFormat/choiceFormat为NumberFormat的子类
        double num=0.1124253822;
//      numberFormat.parse(字符串);//parse(表示由字符串到格式化的类型)
        numberFormat.format(num);
        System.out.println(numberFormat.format(num));//format(表示)
        String str1="19.8888934567888%";
        double num1=(double) numberFormat.parse(str1);
        System.out.println(num1);
        System.out.println(numberFormat.parse(str1));
    }
    //parse表示(由string类型的转换成想要格式化的类型)
    //format表示(由想要格式化的类型转换成string类型)

}

九.Calendar类
Calendar.getInstance()创建对象
calendar.set()的容错性
ca1.get(Calendar.DATE)采用的是Calendar类的默认字段

package day12;

import java.util.Calendar;

public class Calenda_Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Calendar ca1=Calendar.getInstance();//使用getInstance创建对象
/*      //ca1.get(Calendar.DATE):返回的是一个int类型
        System.out.println(ca1.get(Calendar.DATE));//返回的是日这个类型
        System.out.println(ca1.get(Calendar.DAY_OF_WEEK)
                +" "+ca1.get(Calendar.DAY_OF_MONTH));//一周的第几天,一个月中的第几天
        System.out.println(ca1.get(Calendar.DAY_OF_WEEK_IN_MONTH));//一个月中的第几周
        System.out.println(ca1.get(Calendar.HOUR));//12小时制
        System.out.println(ca1.get(Calendar.HOUR_OF_DAY));//24小时制
        System.out.println(ca1.get(Calendar.MONTH)+1);//月*/
        ca1.set(Calendar.YEAR, 2069);//set给年赋值
        System.out.println(ca1.get(Calendar.YEAR));
        ca1.add(Calendar.DATE, 50);//add有容错性,给日期向后相加某个天数
        System.out.println((ca1.get(Calendar.MONTH)+1)+" "+ca1.get(Calendar.DATE));

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值