Scanner类、Math类、Random类、String类(字符串对象)
1.Math类:

数学类, java提供用来处理和计算复杂数学运算的类,Math

Math类中常见的方法:

PI        // 圆周率, 属性
E        // 自然常数,属性
abs(num)    // 返回num值的绝对值
cbrt(a)    // 开立方根
ceil(a)    // 向上取整 
floor(a)    // 向下取整
pow(a, b)    // a^b 幂次方
sqrt(a)    // a的平方根
random()    // 获取一个[0, 1)的随机小数 

2.Random类

随机数:计算机中随机数都是伪随机数
Math.random()    // 获取一个[0, 1)的随机小数 

public class Three {
    public static void main(String[] args) {
        //获取一个0-100的随机数
        int a= (int) (Math.random()*100);
        System.out.println(a);
    }
}

java.util.Random使用Random类需要导包

Random r = new Random([long seed]);

        r.nextInt()
        r.nextDouble()
        ……

import java.util.Random;
public class Three {
    public static void main(String[] args) {
        //获取一个0-100的随机数
        Random r=new Random();
        int a=r.nextInt(100);
        System.out.println(a);
    }
}

3.Scanner类

Scanner 是标准输入流,IO流

  • next()        // 通过空格获取字符串(单词),也可回车
  • nextInt()
  • nextDouble()
  • hasNext()
import java.util.Scanner;
public class Three {
    public static void main(String[] args) {
        Scanner iu=new Scanner(System.in);//创建一个Scanner对象iu
        int a=iu.nextInt();//输入一个整数
        String b=iu.next();//输入一个字符串
        double c=iu.nextDouble();//输入一个双精度浮点数
        boolean d=iu.hasNext();//输入一个布尔值
    }
}

4.String类

字符串对象(String):
    java.lang.String

    字符串:字符连在了一起,形成了字符串。人的肉眼可以识别分符号
    在Java中,一般表现为"",引号的内部内容就是字符串
    在java中,字符串是引用数据类型(对象)

字符串是一个常量,是一种不可变的数据类型

定义字符串:

第一种定义方式:
      String s = "this is a woman!";    // 定义了一个字符串

第二种定义方式
      new String()        获取字符串
      String ss = new String();    // 等价于 String ss = "";

      String sss = new String("王家豪是个大帅哥");    
    // 等价于 String sss = "王家豪是个大帅哥";

 

常见的字符串方法:
    |-- charAt(i)                // 获取下标对应的字符
    |-- length()                // 返回字符串的长度
    |-- codePointAt(i)            // 获取下标对应的字符的Unicode值

String s="123456";
for (int i=0;i<s.length();i++){//字符串的长度
System.out.print(s.charAt(i));//获取字符串下标对应的字符
}
System.out.println();
System.out.println(s.codePointAt(0));//获取下标对应字符的unicode

    |-- concat(str)                // 拼接字符串
    |-- contains(str)            // 查找当前字符串是否存在
    |-- static copyValueOf(char[])        //返回指定数组中表示该字符序列的字符串
    |-- endsWith(suffix)            //判断字符串是否以指定字符串结尾
    |-- startsWith(prefix)        //判断字符串是否以指定字符串开头
    |-- equals(str)            //判断两个字符串是否相等

String a="123";
        String b="45";
        String c=a.concat(b);//拼接字符串
        System.out.println(a.contains("1"));//查找字符在字符串中是否存在
        System.out.println(c.endsWith("1"));//判断字符串是否以1结尾
        System.out.println(c.startsWith("2"));//判断字符串是否以1开头
        System.out.println(a.equals(b));//判断两个字符串的值是否相等

    |-- equalsIgnoreCase(str)        //将字符串与指定的对象比较,不考虑大小写。
    |-- getByte()            //得到一个操作系统默认的编码格式的字节数组
    |-- indexOf(str)            //返回子字符串下标
    |-- lastIndexOf(str)            //从尾部搜索,返回字符串下标
    |-- isEmpty()             //判断的是值的长度
    |-- replace(oldstr, newstr)        //替换字符串的子串,要写在输出语句
    |-- static join(标识符, 字符串数组)    //数组转字符串
    |-- split(regex)            //分割字符串,字符串转数组 
    |-- substring(index)            //截取字符串
    |-- substring(start, end)        //靠字符串下标截取字符串

String a="a,b,c,d,e";
System.out.println(a.replace("abc","123"));//替换字符串
System.out.println(a.split(",",1));分割字符串
System.out.println(a.substring(0,2));//截取字符串

    |-- toCharArray()             //把字符串变成字符数组
    |-- toLowerCase()             //小写字母
    |-- toUpperCase()             //大写字母
    |-- trim()                 //移除字符串首尾空格
    |-- valueOf()            //是静态方法,可以把任意基本类型或引用类型转换为字符串

String a=" abc ";
System.out.println(a.trim());//移除首位空格
System.out.println(a.toUpperCase());//大写字母
System.out.println(a.toCharArray());//把字符串变成字符数组

注意:字符串不要使用等于符号判断是否相等
    在java中 == 判断的值的,不能用来判断字符串
    因为字符串的创建方式有多种,不同的创建方式,地址(指针)可能不一样

    
    基本数据类型都是可以使用 == 判断是否相等
    字符串不能还是用 == 判断是否相等

    字符串中 == 判断的字符串的地址
    equals判断是字符串的值;

Java中数组的使用

数组:
什么是数组(Array):
    数组是一种连续内存、大小固定的线性表,是一种数据结构,用来解决大量的存储问题。

为什么学习数组:数组可以解决大量数据存储问题
容器(collection):容器一般是一种数据结构,是用来解决多个数据保存和计算的容器
    线性表,数组,栈,队列,链表,哈希表   ,树 ,图。

数组的特点:
    1、大小固定
    2、连续内存地址
    3、存储的数据类型固定
    4、数组是保存在堆内存中!!!因此数组是对象!!!
    
Java中如何定义数组
    // 第一种定义方式
    数据类型[] 变量名称 = new 数据类型[size];

int[] a=new int[1];

    // 第二种定义方式
    数据类型[] 变量名称 = new 数据类型[]{值1, 值2……};

int[] a=new int[]{1};

    // 第三种定义方式
    数据类型[] 变量名称 = {值1, 值2……};

int[] a={1,2,3,4,5};

数组的长度(元素的个数):
    数组对象.length        // 属性

访问数组元素(element):
    通过下标来访问,注意:在编程中,99%情况下,下标都是从0开始

    数组对象[下标]        // 通过下标来访问元素的个数

修改元素的数值:
    数组对象[下标] = 新值

遍历数组:
    制作一个索引

for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
int i = 0;
    while(i < arr.length) {
        System.out.println(arr[i]);
        i++;
    }

    foreach    // 循环加强,是jdk5的新特性,是一种迭代容器操作
    for (数据类型 临时变量: 可迭代对象) {
        System.out.println(临时变量);
    }

for (int item: arr) {
        System.out.println(item);
    }

值传递和引用传递的区别:

值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。

引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。