文章目录
01 Scanner Random ArrayList
1.1 导包
使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。
1.2 Scanner类
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
备注:System.in 系统输入指的是通过键盘录入数据。
1.3 Random类
import java.util.Random;
public class Demo01_Random {
public static void main(String[] args) {
//创建一个随机数生成器
Random r = new Random();
for(int i = 0; i < 3; i++){
//number取值范围为 [0,10)
int number = r.nextInt(10);
System.out.println("number:"+ number);
}
}
}
1.4 ArrayList类
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
1.4.1 ArrayList类的方法
public class Demo01ArrayListMethod {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> list = new ArrayList<String>();
//添加元素
list.add("hello"); list.add("world"); list.add("java"); //获取集合中的第一个元素
System.out.println(list.get(0));
//返回集合中的元素个数
System.out.println(list.size());
//删除指定索引处的元素,返回被删除的元素
System.out.println(list.remove(0));
}
}
1.4.2 如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。所以,想要存储基本类型数据, <> 中的数据类型,必须转化为包装类,转换写法如下:
02 String static Arrays Math
2.1 String类
2.1.1 特点
1.字符串的值在创建后不能被修改。
String s1 = "abc";
s1 += "d";
// 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向"abcd"。
System.out.println(s1); // "abcd"
2.因为String对象是不可变的,所以它们可以被共享。
String s1 = "abc";
String s2 = "abc";
// 内存中只有一个"abc"对象被创建,同时被s1和s2共享
3.“abc” 等效于 char[] data={ 'a' , 'b' , 'c' }
String str = "abc";
char data[] = {'a', 'b', 'c'};
String str = new String(data);
// String底层是靠字符数组实现的。
2.1.2 常用方法
判断功能
public boolean equals (Object anObject)
:将此字符串与指定对象进行比较。public boolean equalsIgnoreCase (String anotherString)
:将此字符串与指定对象进行比较,忽略大小写。
获取功能
public int length ()
:返回此字符串的长度。public String concat (String str)
:将指定的字符串连接到该字符串的末尾。public char charAt (int index)
:返回指定索引处的 char值。public int indexOf (String str)
:返回指定子字符串第一次出现在该字符串内的索引。public String substring (int beginIndex)
:返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。public String substring (int beginIndex, int endIndex)
:返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex。
转换功能
public char[] toCharArray ()
:将此字符串转换为新的字符数组。public byte[] getBytes ()
:使用平台的默认字符集将该 String编码转换为新的字节数组。public String replace (CharSequence target, CharSequence replacement)
:将与target匹配的字符串,使用replacement字符串替换。
分割功能
public String[] split(String regex)
:将此字符串按照给定的regex(规则)拆分为字符串数组。
//创建字符串对象
String s = "aa|bb|cc";
String[] strArray = s.split("|");
for(int x = 0; x < strArray.length; x++) {
System.out.println(strArray[x]); // aa bb cc
}
2.2 static关键字
2.2.1 类变量
当static
修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,也可以在不创建该类的对象的情况下对类变量进行操作。
2.2.2 静态方法
当static
修饰成员方法时,该方法称为静态方法 。静态方法在声明中有 static ,建议使用类名来调用,而不需要创建类的对象。
静态方法调用的注意事项:
- 静态方法可以直接访问类变量和静态方法。
- 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
- 静态方法中,不能使用this关键字。
总结:静态方法只能访问静态成员。
2.2.3 静态原理图解
static
修饰的内容:
- 是随着类的加载而加载的,且只加载一次。
- 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
- 它优先于对象存在,所以,可以被所有对象共享。
2.2.4 静态代码块
静态代码块:定义在成员位置,使用static修饰的代码块{ }。
- 位置:类中方法外。
- 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
- 作用:给类变量进行初始化赋值。用法演示,代码如下:
public class Game {
public static int number;
public static ArrayList<String> list;
static {
// 给类变量赋值
number = 2;
list = new ArrayList<String>();
// 添加元素到集合中
list.add("张三");
list.add("李四");
}
}
小贴士:
static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。
2.2.5 静态内部类
特点:
- 静态内部类跟静态方法一样,只能访问静态的成员变量和方法,不能访问非静态的方法和属性,但是普通内部类可以访问任意外部类的成员变量和方法
- 静态内部类可以单独初始化: Inner i = new Outer.Inner();
普通内部类初始化: Outer o = new Outer(); Inner i = o.new Inner();
2.3 Arrays类
概述
java.util.Arrays
类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法。
2.4 Math类
概述
java.lang.Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。其所有方法均为静态方法。
基本运算的方法
public static double abs(double a)
:返回 double 值的绝对值。public static double ceil(double a)
:返回大于等于参数的最小的整数。public static double floor(double a)
:返回小于等于参数最大的整数。public static long round(double a)
:返回最接近参数的 long。(相当于四舍五入方法)