java常用API

  • Java API

    • 常用类库

      系统相关、用户输入、Object类、包装类、字符串相关、计算相关、日期相关;

    • 核心类库

      异常处理、集合、泛型、IO、多线程、网络编程、注解、反射机制

  • 文档注释

    • 文档注释规范

      1./**开始,*/结束;

      2.提取以public protected修饰的内容;

      3.提取类、接口、构造方法、成员变量、成员方法、内部类之前的注释;

    • Javadoc命令

      • 规范

        javadoc 选项 java源文件/包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wJPxGuEW-1639062110905)(https://secure1.wostatic.cn/static/23Cfcx7kHJpjWfc8hBcAgJ/81551abb737685267437dcce6138a8d.jpg)]

  • 系统相关类

    • System

      1.System类代表当前Java程序的运行平台;

      2.System类不允许被实例化,它所提供的变量和方法全部都是静态的;

      3.System类提供了代表标准输入、标准输出、错误输出的静态变量;

      4.System类提供了访问环境变量、访问系统属性、加载文件、加载动态链接库等方法;

    • Runtime

      1.Runtime类代表Java程序的运行环境;

      2.Runtime符合单例模式,我们只能通过getRuntime()获得该类型唯一的实例;

      3.Runtime类提供了访问JVM相关信息的方法,如获取CPU数量、获取空闲内存数;

  • 用户输入

    • main()的参数

      命令:java 字符串文件名 字符串1 字符串2 …

public class UserInput{
  public static void main(String[] args){
    // main()的参数
    // java UserInput “Hello world” OK
    for(String arg : args){
      System.out.println(arg);
    }
  }
}


  • Scanner类

    1.hasNextXxx():判断是否还有下一个输入项,其中Xxx是代表进本类型的单词.如Int、Long、Double等;

    2.nextXxx():获取下一个输入项;

public class UserInput{
  public static void main(String[] args){
    //Scanner
    Scanner scan = new Scanner(System.in);
    while(scan.hasNextInt()){
      int score = scan.nextInt();
      if(score < 0){
        break;
      }
      System.out.println("本次输入" + score);
    }
    scan.close();
  }
}
// 修改分隔符
// scan.userDelimiter("\n");
//或者scan.hasNextLine()/scan.nextLine()获得字符串;
// 输入字符串
while(scan.hasNext()){
  String str = scan.next();
  if(str.eauqls("exit")){
    break;
  }
}
  • Object类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jlZdR9eO-1639062110906)(https://secure1.wostatic.cn/static/jK61d3xP79k3swCHAKwLhV/18b77a787e5e504477946f06e64107e.jpg)]

    • 重写Object类的equals方法
// equals方法重写
public class EqualsUse {

    public static void main(String[] args) {

        User user1 = new User("name1", "pwd1", 10, new double[10], 01);
        User user2 = new User("name1", "pwd1", 10, new double[10], 01);
        System.out.println(user1.equals(user2));
    }


}
// User也是Object类的子类
public class User {

    String name;
    String pwd;
    int score;
    double[] orderList;
    final int id;

    public User(String name, String pwd, int score, double[] orderList, int id) {
        this.name = name;
        this.pwd = pwd;
        this.score = score;
        this.orderList = orderList;
        this.id = id;
    }
  // 重写equals方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return score == user.score && id == user.id && name.equals(user.name) && pwd.equals(user.pwd) && Arrays.equals(orderList, user.orderList);
    }
  //hashcode方法为什么也会被重写,不太清楚
    @Override
    public int hashCode() {
        int result = Objects.hash(name, pwd, score, id);
        result = 31 * result + Arrays.hashCode(orderList);
        return result;
    }
}
  • 包装类

    八种数据类型不具备对象的特性,为解决这个问题,Java为每个基本类型都定义了一个对应的引用类型,他们都是基本类型的包装类。

    • 基本类型与包装类型之间的转换:

      1.自动装箱:可以把一个基本类型的数据直接赋值给对应的包装类型;

      2.自动拆箱:可以把一个包装类型的对象直接赋值给对应的基本类型;

    • 包装类型的API

      • 字符串转为基本类型
public static int parInt(String s){}
public Integer(String s){}
//!Character类中没有定义上述静态方法、构造方法

- **比较两个数据的大小**
public static int compare(int x, int y){}
// 1.5以前
Integer oi = new Integer(value : 1);
Character oc = new Character(value : 'A');
int i = oi.intValue(i);
char c =oc.charValue(c);

// 1.5以后
// 自动装箱
Double od =3.14;
Boolean ob = true;

// 自动拆箱
double d = od;
boolean b = ob;

// 字符串转换成基本类型
double dd = Double.parseDouble("1.23");

//基本类型转换成字符串
String s1 = String.valueof(1);

//比较两值
Boolean.compare(false, true);
  • ** 包装类是不可变类**

    该类被实例化后,它的实例变量是不可改变的;

    1.使用private和final修饰成员变量;

    2.提供带参数的构造器,用于初始化上述成员变量;

    3.仅提供获取成员变量的方法,不提供修改的方法;

    包装类都是final的,但是final只意味着类不可以被继承,并不意味着它的实例变量不可改变(成员变量final决定);

  • 包装类的父类(Number、Object)

  • 包装类中的静态常量

    1.MAX_VALUE

    2.MIN_VALUE

  • String

    • 不可变类

      String也是不可变类,创建String对象后,其内部的字符序列不能改变;

    • 使用String

      1.length();

      2.getBytes();

      3.equals();比较字符串的内容

String str = new String("Hello,你好");
str.length();
Arrays.toString(str.gerBytes());// utf-8
Arrays.toString(str.getBytes("GBK"));

- **注意:String的区别**
// 第一种字符串声明方式;
String str1 = new String("Hello");
String str1 = new String("Hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));

output:False,True;

// 第二种也就是常用的字符串声明方式;
// 字符串存储在方法区内字符串类型的常量池中
// 内容相同的直接量在常量池中只保存一份
String str1 = "Hello";
String str1 = "Hello";
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));

output:True,False;
  • StringBuilder

    1.StringBuilder封装可变的字符串,对象创建后可以通过方法改变其封装的字符序列;

    2.StringBuffer、StringBuilder作用与方法是一样的,去背在于前者是线程安全的;

    3.StringBuilder是非线程安全的,性能较好,所以通常优先考虑使用StringBuilder。

    • StringBuilder常用API

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8tFFYEH-1639062110906)(https://secure1.wostatic.cn/static/uCGzg5mgQGhBugtK5qNrgL/576c0763b815d90397e72a8274b28c1.jpg)]

StringBuilder sb = new StringBuilder();
System.out.println(sb.capacity());

sb.append("Hello").append("World");
System.out.println(sb.toString());

sb.insert(12,"你好");
// 常用格式
StringBuilder builder = 
            new StringBuilder()
                    .append("Hello")
                    .append("world");
System.out.println(builder.toString());

  • 正则表达式

    1.在编写处理字符串程序的时候,经常会有查找符合某些复杂规则的字符串的需要;

    2.正则表达式就是用于描述这些规则的工具,正则表达式就是记录文本规则的代码;

    3.各类编程语言都会提供支持正则表达式的API;

    • 元字符
元字符说明
.匹配除换行符以外的任意字符
\d匹配数字
\s匹配任意的空白字符(空格、制表符、回车符、换页符、换行符等)
\w匹配字母或数字或下划线
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

字符转义:如果要查找元字符本身,则需要使用“\”转义,如“.”、“*”、“\”

  • 重复
限定符说明
*****重复零次或多次
+重复一次或多次
重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n次到m次
  • 重复模式

    1.贪婪模式

    2.懒惰模式

限定符说明
*?重复零次或多次,尽可能少重复
+重复一次或多次,尽可能少重复
重复零次或一次,尽可能少重复
{n,}重复n次或更多次,尽可能少重复
{n,m}重复n次到m次,尽可能少重复
  • 字符类

    用[]定义一个字符集合:

    1.[aeiou]匹配任何一个元音字母;

    2.[0-9]匹配任何一位数字,与\d等价;

    3.[0-9a-zA-Z_]匹配字母、数字、下划线之中的任何一个字符,与\w等价;

  • 分支条件

  • 子表达式()

    用于定义子表达式(分组),可以将其作为一个整体,指定重复次数;

  • 反义

反义字符说明
\W匹配不是字母、数字、下划线的字符
\S匹配不是空白字符的字符
\D匹配不是数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除x以外的任意字符
[^aeiou]匹配除了aeiou意外的任意字符
  • String与正则表达式
boolean matches(String regex)
// 判断字符串是否与指定的正则表达式(String regex)匹配;
String[] split(String regex)
// 以正则表达式(regex)匹配的内容作为分隔符,将此字符分隔成多个子串;
String replaceFirst(String regex, String replacement)
// 将此字符串中,第一个与正则表达式(regex)匹配的子串替换成目标(replacement);
String replaceAll(String regrex, String replacement)
// 将此字符串中,每一个与正则表达式(regex)匹配的子串替换成目标(replacement);
String paragraph = "How are you\n" + "Im fine thank you\n";
String paragraphReg = "\\n";
String[] words = paragraph.split(paragraphReg);
Sout(Arrays.toString(words));
  • Pattern类和Matcher类

    1.Pattern对象是正则表达式编译后在内存中的表示形式;

    2.Matcher对象是正则表达式与字符串匹配的结果与状态;

    3.Matcher对象通过Pattern对象创建而来,且多个Matcher对象可共享一个Pattern对象;

Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
boolean b = matcher.matches();
// 直接一行代码解决
Matcher matcher = Pattern.compile(reg).matcher(str);
while(matcher.find()){
  sout(matcher.group());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值