# Java学习笔记(三) ——基础知识篇

API

Application Programming Interface,应用程序编程接口

位于java.lang下的包不需要导包

1.Scanner

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String str = sc.next();

匿名对象只能使用唯一的一次,如果确定一个对象只需使用唯一一次,就可以使用匿名对象。

匿名对象可以作为参数和返回值。

package:java.util

2.Random

Random r = new Random();
int num = r.nextInt();//整个int范围,包含负数
int num = r.nextInt(3);//参数代表了范围,左闭右开区间[0,3)

package:java.util

3.ArrayList< E >

package:java.util

泛型只能是引用类型,不能是基本类型

ArrayList<String> list = new ArrayList<>();//右侧<>中内容可以省略
boolean = list.add("example");//添加内容
String str = list.get(1);//参数为索引值
String rm = list.remove(0);//参数为索引值
int size = list.size();

对于ArrayList集合来说,直接打印得到的不是地址,而是内容

如果希望向集合ArrayList当中存储基本数据类型,必须使用基本数据了性对应的“包装类”,位于java.lang

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

4.String

程序中的所有字符串都是String类的对象,字符串的内容不可修改,可以共享使用,效果上相当于char[],底层原理是byte[]字节数组。

String str1 = new String();
char[] charArray = {'a','b','c'};
String str2 = new String(charArray);
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray);
String str4 = "123";//不new也是字符串对象

字符串常量池:程序中直接写上的双引号字符串,就在字符串常量池中,而new出来的字符串不在池当中。字符串常量池在堆当中。

字符串对象其实存的是byte[]的地址。

对于基本类型来说, == 是进行数值的比较,对于引用类型来说, == 是进行地址的比较。

任何对象都能用Object接收。

boolean isOk1 = str1.equals(str2);//比较字符串的值
boolean isOk2 = "Hello".equals(str3);//equals方法具有对称性,推荐使用把常量放在前面,如果有常量的话
boolean isOk3 = str3.equals("Hello");//不推荐,如果str3为空指针则会报错,空指针异常NullPointerException,而常量放前面不会出现这种情况
boolean isOk4 = str4.equalsIgnoreCase(str5);//忽略大小写
int length = "abcdefg".length();//获取长度
//拼接字符串
String str1 = "a";
String str2 = "b";
String str3 = str1.concat(str2);//ab,为新的字符串,str1、str2未变,因为字符串不可改变
//获取指定索引位置的单个字符
char ch="Hello".charAt(1);//ch为e
//查找参数字符串在本来字符串当中出现的第一次索引位置
//如果没有,返回-1
String str = "abcdefghcdefg";
int index = str.indexOf("cd");//index为2
//截取从参数位置一直到字符串末尾,返回新字符串
String str1 = "abcdefghcdefg";
String str2 = str1.subString(5);
String str3 = str1.subString(4,8);//左闭右开,截取4-7
//将当前字符串拆分成为字符数组作为返回值
char[] chars="Hello".toCharArray();
//获得当前字符串底层的字节数组
byte[] bytes="Hello".getBytes();
//将所有出现的要替换字符替换为新的字符,返回新字符串
String str1="How are you?";
String str2=str1.replace("o","%");
//按照参数的规则,将字符串切分为若*分
String str1 = “aaa,bbb,ccc";
String[] array=str1.split(",");//参数为正则表达式,要按"."拆分,则要转义,传参"\\." 
上一篇:JavaScript 对字符串的操作方法


下一篇:[Cnoi 2021]