java 基本类


  1. math类  

math类主要是用来数学计算 是一种工具类

工具类基本都是静态的static

自带常量

Math.E :自然对数

Math.PI : 圆周率 

取整方法

Math. ceil(xxxxxx):向上取整

Math. floor(xxxxx):向下取整

Math. round (xxxxx):四舍五入

三角函数

Math.sin() :正弦函数      ()中全为弧度制

Math.cos(): 余弦函数

Math.tan():正切函数

Math.toDegerrs ():将弧度转为角度

Math.Radians ():将角度转为弧度

Math. asin(double a):反正弦函

 Math.acos(double a):反余弦函数

 Math.atan(double a):反正切函数

指数函数

Math.pow(a,b) 求a的b次幂

Math.sqrt(a)求a的平方根

Math.cbrt(a)求a的立方根

其他方法

Math.abs(a)求a的绝对值

Math.hypot(0x,0y)返回两点间距离

Math.max(a,b)返回a b'之间最大值

Math.min(a,b)返回a b之间最小值

Math.random()返回【0,1)之间的随机小数’

2.Scanner类

主要用于负责数据输入的类,底层是和IO流相关。

String next():获取直到遇到空格为止的一个字符串

String nextLine():获取直到遇到回车为止的一个字符串

int nextInt():获取下一个整数 byte short long

double nextDouble()

boolean nextBoolean()

float nextFloat()

 

3.Random类

 主要用于产生随机数

boolean nextBoolean():随机产生布尔类型值

double nextDouble():随机生成0.0~1.0之间的小数

double nextInt():随机生成一个整数0~2 32的整数

double nextInt(n):随机生成一个整数[0,n)的整数

4.String类

String描述的是字符串  字符串一旦被建立 无法修改长度和内容 只能重新建立

public class Sample {
public static 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开始到结尾

String substring(int beginIndex, int endIndex):截取一段子字符串,从beginIndex开始到 endIndex(不包含

判断相关

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

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

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

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

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

boolean endsWith(String suix):判断该字符串是否已suix结尾

修改相关

String toLowerCase():将字符串中所有的英文字母全部变为小写

String toUpperCase():将字符串中所有的英文字母全部变为大写

String trim():将字符串中两端的多余空格进行删除

String replace(char oldCh,char newCh):将字符串中oldCh字符替换成newCh字符

 

相关练习

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

public class Sample {
public static void main(String[] args) {
String str = " 123123123 12123 ";// 对两头进行标志 同时向内进行切割
//去空格后"123123123 12123"
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 Sample {
public static void main(String[] args) {
String s1 = "abcbcbcbcbcbc";
String s2 = "bcb";
//贪心算法 不断取相同字符串 
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);

// s2 的首位不断与s1的每一位比较 若相同则切割s1 与s2比较
public class Sample {
public static void main(String[] args) {

String s1 = "abcbcbcbcbcbc";
String s2 = "bcb";
//非贪心算法   找到相同字符串个数即可 无须依次查找 例如题中 就有三个
String temp = s1;
int count = 0;
while (true) {
int index = temp.indexOf(s2);//在s1中查询s2 获取s2第一次出现的角标
if (index == -1) {
break;  //若不存在s2 则返回值-1 退出循环
}
count++;
temp = temp.substring(index + s2.length());   // 存在 则记录 并切割s1 
}
System.out.println(count);

}
}

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

public class Sample {
    public static void main(String[] args) {
        String s1 = "c is a program but is diffcult";
            String s2 = "Java is a program but is slow";
        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;//直接结束程序
                           }
                          }
                   }
          }
}
由大到小 例如 adcdefg 长度7 角标 0~6 
                截取一个字符 长度6 角标 0~5 1~6
                     以此类推 不断截取短的字符串与长字符串做对比 由长至短

Character 类

Character它是char基本数据类型的 包装类

static boolean isDigit(char ch):判断字符是否是数字

static boolean isLetter(char ch):判断字符是否是字母

static boolean isLetterOrDigit(char ch):判断字符是否是数字或字母

static boolean isLowerCase(char ch):判断是否是小写字母

static boolean isUpperCase(char ch):判断是否是大写字母

static boolean isSpaceChar(char ch):判断是否空白字母(空格 制表符 回车

import java.util.Scanner;
public class Sample {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个十六进制的数字:");
        //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 < 'A' || ch > 'F')) {
                    System.out.println("非法字符" + ch);
        return;
        }
                } else {
                    System.out.println("非法字符" + ch);
                        return;
            }
        }    判断合法后进行进制转换
        int sum = 0;
        for (int i = hex.length() - 1; i >= 0; i--) {
            char ch = hex.charAt(i);
            if (Character.isDigit(ch)) {
            //'1' ? 1
            sum = sum + (int)Math.pow(16 , hex.length() - i - 1) * (ch - 48);
        } else {
            //'A' - 65 + 10 -> 10
                sum = sum + (int)Math.pow(16 , hex.length() - i - 1) * (ch - 55);
            }
        }
                System.out.println(sum);
        }
}