Java常用类

本文详细介绍了Java编程中常用的几个类:Math类提供了数学计算功能,包括常量、取整、三角函数等;Scanner类用于数据输入,如读取字符串、整数等;Random类用于生成随机数;String类则讨论了字符串的创建、操作和判断方法;最后提到了Character类,它包含了对字符的判断和转换功能。
摘要由CSDN通过智能技术生成

Java常用类

1.Math类

​ Math适用于数学计算的工具类

对于工具类而言,里面的大部分成员都是静态的static

自带常量

  • static double E :自然对数
  • static double PI:圆周率
public class Test{
    public static void main(String[] args){
        System.out.println(Math.E);
        System.out.println(Math.PI);
    }
}

取整方法

  • static double ceil(double a):向上取整
  • static double floor(double a):向下取整
  • static long round(double a):四舍五入
public class Test{
    public static void main(String[] args){
        System.out.println(Math.ceil(3.1));
        System.out.println(Math.ceil(3.9));
        System.out.println(Math.floor(3.1));
        System.out.println(Math.floor(3.9));
        System.out.println(Math.round(3.1));
        System.out.println(Math.round(3.9));
    }
}

三角函数

  • static double sin(double a):正弦函数 参数是弧度制
  • static double cos(double a):余弦函数 参数是弧度制
  • static double tan(double a)正切弦函数 参数是弧度制
  • static double toDegrees(double a):将弧度转为角度
  • static double toRadians(double angles):将角度转为弧度
  • static double asin(double a): 反正弦函数
  • static double acos(double a): 反余弦函数
  • static double atan(double a): 反正切函数

指数函数

  • static double pow(double a,double b):求a的b次幂

  • static double sqrt(double a):求a的平方根

  • static double cbrt(double a):求a的立方根

其他方法

  • static double abs(double a):求a的绝对值
  • static double hypot(delt X,delt yY:返回sqrt(x2+y2)

2.Scanner类

主要负责数据输入的类,底层是和io流相关

  • String next():获取直到遇到空格为止的一个字符串
  • String nextLine():获取直到遇到回车为止的一个字符串
  • int nextInt()
  • double nextDouble()
  • boolean nextBoolean()
  • float nexFloat()

3.Random类

主要用于产生随机数

  • boolean nextBoolean():随机产生布尔类型值
  • double nextDouble():随机生成0.0~1.0之间的小数
  • double nextInt():随机生成一个整数0~2de32次方的整数
  • double nextInt(n):随机产生一个整数[0,1)的整数

4.String类

​ String是一个类,它描述的是字符串。并且在java代码中,所有字符串常量(字符串字面量)都是S听类的一个实例对象。并且,字符串一旦创建,则不可修改,不可修改其长度,也不可修改其内容。所以对字符串内容的改变,不能在原地修改,只能重新创建一个字符串。

public class Test{
    public statuc void main(String[] args){
        String s1 = "abc";
        String s2 = "ab" + "dc";
        //上述代码一共有几个字符串?
        //四个"abc" "ab" "dc" "abdc"
    }
}

获取相关操作

  • char charAt(int index):获取指定角标index处的字符
  • int indexOf(int ch):获取指定字符(编码)在字符串中第一次(从左到右)出现的地方返回的是角标、如果是-1表示不存在
  • int lastIndexOf(int ch):获取指定字符(编码)在本字符串中第一次(从右到左)出现的地方返回的是角标
  • Int indexOf(String str):获取指定字符串在本字符串中第一次(从左到右)出现的地方返回的是角标
  • int lastIndexOf(String str):获取指定字符串在本字符串中第一次(从右到左)出现的地方返回的是角标
  • int length():获取字符串的长度(字符的个数)
  • String[] split(String regex):将字符串按照regex的定义进行切割(regex指的是正则表达式)
  • String substring(int beginIndex):截取一段子字符串,从beginIndex开始到结尾
  • Stirng subString(int beginIndex,int endIndex):截取一段子字符串,从beginIndex开始到endIndex(不包含)
public class Test{
    public static void main(String[] args){
        String str  = "banana orange apple watermelon";
        System.out.println(str.charAt(1));         //'a'
        System.out.println(str.indexOf('o'));      //7
        System.out.println(str.lastIndexof(97));   //21
        System.out.println(str.length());      //30
        System.out.println(str.subString(6));      // orange apple watermelon
        System.out.println(str.subString(9,13));      //ange
        String[] arr = str.split(" ");
        System.out.println(arr[2]);             //apple
    }
}

判断相关操作

  • int compareTo(String anotherString):按照字典顺序比较两个字符串的大小

  • boolean contains(String another):判断当前字符串中是否包含指定字符串another

  • boolean equals(String another):当前字符串与指定字符串内容是否相同

  • boolean isEmpty():判断当前字符串是否为空,length() == 0

  • boolean startWith(String prefix):判断该字符串是否以prefix开头

  • boolean endsWith(String sunfix):判断该字符串是否以sunfix结尾

    public class Test{
        public static void main(String[] args){
            String s1 = "abc";
            String s2 = "bcd";
            System.out.println(s1.compareTo(s2));
            //如果结果<0 s1在s2之前 ==0 s1和s2一样 >0s1在s2之后
            System.out.println("hehe".compareTo("hehe"));
            System.out.println("lala".equals("lala"));
            String s3 = "啦啦啦";
            System.out.println(s3.endsWith("啦"));
            System.out.println(s3.startWith("啦"));
        }
    }
    

    修改相关

    • String toLowerCase():将字符串中所有的英文字母全部变为小写
    • String toUpperCase():将字符串中所有的英文字母全部变为大写
    • String trim():将字符串中两端多余的空格删掉
    • String replace(char oldCh,char newCh):将字符串中oldCh字符替换成newCh字符

如何来自己删除字符串中左右两端出现的空格,不要trim

public class Test{
    public static void main(String[] args){
        String str = "    123123  123  ";
        //删掉左右空格不用trim,"123123  123"
        int l = 0;//左标记
        int r = str.length() - 1;//右标记
        while(str.charAt(l) == ' '){
            l++;
        }
        while(str.charAt(r) == ' '){
            r--;
        }
        System.out.println("[" + str.substring(l,r + 1) + "]");
    }
}

在字符串"abcbcbcbcbcbc"中统计"bcb"出现的次数

public class Test{
    public static void main(String[] args){
       String s1 = "abcbcbcbcbcbc";
       String s2 = "bcb";
       //最好的算法KMP算法
       //贪心算法 5个
       int count = 0;
       for(int i = 0;i < s1.length()) - s2.length() + 1;i++){
            if(s1.charAt(i) == s2.charAt(0)){
               if(s2.equals(s1.substring(i,i + s2.length()))){
               count++;
               }
            }
       }
       System.out.println(count);
       //非贪心算法 3个 
       /*String temp = s1;
       int count = 0;
       while(true){
           int index = temp.indexOf(s2);//得到角标
           if(index == -1){
               break;
           }
           count++;
           temp = temp.substring(index + s2.length());
       }
        System.out.println(count);*/
    }
}

查找两个字符串中最长的公共子串

public class Test{
    public static void main(String[] args){
        String s1 = "今天我喜欢你迪丽热巴";
        String s2 = "明天我喜欢你哈尼克孜";
        
        for (int len =s2.length();len > 0;len--){
            for(int l = 0,r = len - 1;r < s2.length();l++,r++){
                String temp = s2.substring(l,r + 1);
               if(s1.contains(temp)){
                   System.out.println(temp);
                   return;//直接结束程序
               }
            }
        }
    }
}

Character

Character它是char基本数据类型的包装类,有几个静态方法目前可以使用到

  • static boolean isDigit(char ch):判断字符是否是数字
  • static boolean isLetter(char ch):判断字符是否是字母
  • static boolean isLetterOrChar(char ch):判断字符是否是字母或数字
  • static boolean isLower(char ch):判断字符是否是小写字母
  • static boolean isUpper(char ch):判断字符是否是大写字母
  • static boolean isLetter(char ch):判断字符是否是字母
  • static boolean isSpaceChar(char ch):判断字符是否是空白字母(空格 制表 回车)

将一个十六进制数字转为十进制

import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个十六进制的数:");
        //0~9 A~F
        String hex = input.nextLine().toUpperCase();

        if(hex.length() == 0){
            System.out.println("没有任何输入");
            return;//结束程序
        }
        for(int i = 0;i < hex.length();i++){
            char ch = hex.charAt(i);
            if(Character.isDigit(ch) || Character.isLetter(ch)){
                if(Character.isLetter(ch) && (ch > 'F' || ch < 'A')){
                    System.out.println("非法字符" + ch);
                    return;
                }
            }else{
                System.out.println("非法字符" + ch);
                return;
            }
        }
        //09AB 角标0123
        //B*16^0 A*16^1 9*16^2 0*16^3
        int sum = 0;
        for(int i = hex.length() - 1;i >= 0;i--){
            char ch = hex.charAt(i);
            if(Character.isDigit(ch)){
                sum = sum + (int)Math.pow(16,hex.length() - i -1) * (ch -48);//字符'0'是48
            }else{
                //'A' - 65 + 10   10
                sum = sum + (int)Math.pow(16,hex.length() -i -1) * (ch - 55);
            }
        }
        System.out.println(sum);
    }
}

求两个字符串的最大公共前缀

import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("输入一个字符串");
        String s1 = input.nextLine();
        System.out.println("输入另一个字符串");
        String s2 = input.nextLine();
        /*
        	123456123
        	123456
        	i
        */
        if (s1.charAt(0) != s2.charAt(0)){
            System.out.println("没有公共前缀");
        }
        boolean flag = true;
        for(int i = 0;i < s2.length();i++){
            if(s1.charAt(i) != s2.charAt(i)){
                flag = false;
                System.out.println(s2.substring(0,i));
                break;
            }
        }
        if(flag){
             System.out.println(s2);
        }
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值