目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

常用类

Math

@Test
    public void randomHeroTesting() {

        //计算平⽅根
        System.out.println(Math.sqrt(16));
        //计算⽴⽅根
        System.out.println(Math.cbrt(8));
        //两个数的最⼤,⽀持int, long, float,double
        System.out.println(Math.max(2.9,4.5));
        System.out.println(Math.min(2.9,4.5));
        //ceil向上取整,更⼤的值⽅向靠拢, 中⽂是天花板
        System.out.println(Math.ceil(19.7));
        System.out.println(Math.ceil(-20.1));
        //floor向下取整,更⼩的值⽅向靠拢,中⽂是地板意思
        System.out.println(Math.floor(19.7));
        System.out.println(Math.floor(-20.1));

        List<String> list = Arrays.asList("Pandarenbrewer",
                "Flame Lord",
                "Goblin Alchemist",
                "Pit Lord",
                "Dark Ranger",
                "BEASTMASTER",
                "Tinker",
                "Naga Seawitch");

        Random random = new Random();
        //该方法生成从0(包括)到n(不包括)之间的随机整数,是一个伪随机数,并不是真正的随机数。
        System.out.println(list.get(random.nextInt(8)));
        
        //System.out.println(Math.random()); //⼩于1⼤于0的double类型的数
        //产⽣1到10的随机数,int⽅法进⾏转换它会去掉⼩数掉后⾯的数字即只获取整数部分,不是四五⼊
        //int random=(int)(Math.random()*10+1);
    }

String

创建字符串对象的两种方法

// 始终会在堆中开辟新的内存空间
String str= new String("abc");

//字面量(会引用常量池中已存在的地址)
String str = "abc";

字符串比较内容是否相等

  • == 是 ⽐较地址
  • equals()内容是否相等需要 ⽤

常用 API

@Test
    public void stringTesting() {
        String str = "abc";
        String str2 = "dfg";
        String str3 = "ABC";
        String str4 = "a,b,c,d";
	String str5 = "  a b c d  ";

        //获取字符串的长度
        System.out.println(str.length());//3

        //通过下标获取字符
        char c = str.charAt(1);
        System.out.println(c);//b

        //字符串比较
        boolean result = str.equals(str2);//false
        System.out.println(result);

        //字符串比较忽略大小写
        boolean result2 = str.equalsIgnoreCase(str3);//true
        System.out.println(result2);

        //查找字符串出现的位置
        int index = str.indexOf("b");//1
        System.out.println(index);

        //字符串截取(从指定下标开始截取到末尾)
        String substring = str.substring(1);//bc
        System.out.println(substring);

        //字符串截取(指定范围,包括开头不包括结尾)
        String substring1 = str.substring(1, 2);//b
        System.out.println(substring1);

        //字符串拆分 特殊字符注意转义 ("\\.")
        String[] split = str4.split(",");
        for (String s : split) {
            System.out.println(s);// a   b   c   d
        }

        //字符串替换
        String replace = str.replace("c", "x");//abx
        System.out.println(replace);

        //大写转换
        String s = str.toUpperCase();//ABC
        System.out.println(s);

        //小写转换
        String s1 = s.toLowerCase();//abc
        System.out.println(s1);

        //去除空格
        String trim = str5.trim();//a b c d
        System.out.println(trim);

        //其他类型和字符串互相转换
        boolean aBoolean = Boolean.getBoolean("false");
        Integer integer = Integer.parseInt("20");
        long aLong = Long.parseLong("1024");
        float f = Float.parseFloat("3.14159");
        double aDouble = Double.parseDouble("1.423123123");
    }

System

 位于 java.lang 包中,它是系统类,代表程序所在系统,提供了对应的 ⼀些系统属性信息和系 统操作。

//输⼊输出包含三个成员变量,分别是in,out,err
System.out //常⽤调试 
System.in //⽤于数据读取,少⽤ 
System.err //⽤在错误输出,少⽤

//获取系统当前毫秒值
System.currentTimeMillis()

//获取系统环境的属性
System.getProperties()
        Properties properties = System.getProperties();
        Set<Map.Entry<Object, Object>> entrySet = properties.entrySet();
        for (Map.Entry<Object, Object> entry : entrySet) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }

//根据指定key获取系统属性
System.getProperties(key)
	System.out.println(System.getProperty("os.name")); //Windows 10

包装数据类型

 Java 是 ⼀个 ⾯相对象的编程语 ⾔,但基本类型并不具有对象的性质,为了让基本类型也具有 对象的特征,就出现了包装类型。
 集合框架 ⾥ ⾯需要存储对象,不能存储基本数据类型,所以需要存储包装类型。
对照表

基本类型  包装器类型 
boolean	Boolean 
char	Character 
int	Integer 
byte	Byte 
short	Short 
long	Long 
float	Float 
double	Double

基本数据类型与包装类型互相转换

@Test
    public void wrapperTesting(){
        //int => Integer
        int i = 0;
        Integer integer = new Integer(i);
        //Integer => int
        Integer integer2 = new Integer(0);
        int i1 = integer2.intValue();

        //boolean => Boolean
        Boolean aBoolean = new Boolean(false);
        //Boolean => boolean
        boolean booleanValue = aBoolean.booleanValue();
    }

基本数据类型和包装数据类型区别

  • 基本数据类型不 ⽤ new, 包装类型需要使 ⽤ new 关键字来在堆中分配存储空间。
  • 存储 ⽅式及位置不同,基本类型是直接将变量值存储在栈中,包装类型是将对象放在堆中, 然后通过引 ⽤来使 ⽤。
  • 初始值不同,基本类型的初始值如 int 为 0,boolean 为 false,包装类型的初始值为 null。

System.in、Scanner

 位于 java.util 包下,可以通过 Scanner 类来获取 ⽤户的输 ⼊。
常用 API

//获取输⼊的字符串,以回⻋换⾏符为结束标识
public String nextLine()

//获取输⼊的整数
public int nextInt()

//还有nextShort, nextFloat, nextDouble

用法

//构造函数传⼊输⼊流
public Scanner(InputStream source)

//传⼊键盘输⼊流
Scanner s = new Scanner(System.in);

示例

public class ScannerTesting {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("请输入字符串:");
            String input = scanner.nextLine();
            if ("886".equalsIgnoreCase(input)) {
                System.out.println("再见!");
                break;
            } else {
                System.out.println("您输入的是:"+ input);
            }
        }
        scanner.close();
    }
}

作者:Soulboy