一、方法
当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量,需要使用格式:
this.成员变量名。
注:通过谁调用的方法,谁就是this.
构造方法:专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
常用的API:现成的,可以直接拿来用的类,类似于程序员的字典。
Scanner Random ArrayList
匿名对象:
创建对象的标准格式
类名称 对象名 = new 类名称();
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符
new 类名称();
使用方法:
new 类名称().类变量 = “”
注意事项:匿名对象只能使用唯一的一次,下次再用不得不创建一个新对象。
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象。
匿名对象作为方法和返回值。同样只能使用一次
例:int num = new Scanner(System.in).nextInt();
使用匿名对象进行传参
让匿名对象作为返回值:
Random 类:用来生成随机数字
步骤:
- 导包
import hava.util.Random - 创建
Random r = new Random();//小括号留空即可 - 使用
获取一个随机int 数字(范围int 所有范围,有正副两种):int num = r.nextInt();
获取一个随机int 数字(范围int 所有范围,有正副两种):int num = r.nextInt(3);含义,随机获取:[0,2)范围内的整数,
二、ArrayList 集合
数组的长度不可以发生改变,但是ArrayList是可变的。
对于ArryList有一个尖括号,代表泛型
泛型:也就是装在集合中的所有元素,全都统一是什么类型
注意:泛型只能是引用类型,不能是是基本类型
备注:从jdk.7开始,右侧的尖括号内可以不写内容,但是本身<>还是要写的
注意事项:对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容是空,得到的是空的中括号[]
常用方法:
-
public boolean add(E e):向集合中添加元素,参数的类型和泛型一致,返回值代表是否添加成功
备注:对于ArrayList集合来说,add添加一定是成功的,所以返回值可以不用。但是。对于其他集合,add添加不一定成功。
-
public E get(int index):从集合中获取元素,参数是索引下标,返回值就是对应的位置元素
-
public E remove(int index):从集合中删除元素,参数是索引下标,返回值就是对应的位置元素
public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
如果希望向集合ArrayList当中存储基本类型,必须使用基本类型对应的包装类。
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
---|---|
byte | Byte |
short | Short |
int | Integer 特殊 |
Long | Long |
float | Float |
double | Double |
char | Character 特殊 |
noolean | Boolean |
从jdk5+开始,支持自动装箱,自动拆箱。
自动装箱:基本类型自动变成引用类型
自动拆箱:包装类型自动变成基本类型
三、String
程序当中所有的双引号字符串,都是String类型的对象(就算没有new,也照样是)
特点:
- 字符串的内容永不可变。
- 正是因为字符串不可改变,字符串是可以共享使用的。
- 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组。
创建字符串的3+1种方式:
三种构造方法:
- public String();
- public String(char[] array);根据字符数组的内容,来创建对应的字符串
- public String(byte[] array);根据字节数组的内容,来创建对应的字符串
一种直接创建:
- String str = “Hello”;
字符串的常量池:程序当中直接写上的双引号字符串,就在字符串常量池中
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==时进行地址值的比较
String str1 = “abc”;
String str2 = “abc”;
shar[] charArray = {‘a’,‘b’,‘c’};
String str3 = new String(charArray);
str1str2; //true
str1str3; //false
srt2==str3; //false
字符串的相关比较方法
== 是进行对象的地址值比较,如果需要字符串的内容比较,可以使用下面两个方法:
-
public boolean equal(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会返回true,否则就是false。
注意事项:- 任何对象哦都能用Object接收。
- equals方法具有相对性,也就是a.equals(b)和b.equals(a)效果一样。
- 如果比较双方一个常量一个变量,推荐把常量字符串写在前面
推荐:“abc”.equals(str) 不推荐:str.equals(“abc”)
-
public boolean equalsIgnoreCase(String str):忽略大小写
字符串的获取相关方法
获取相关方法:
- public int length():获取字符串中含有的字符个数,拿到字符串长度。
- public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串
- public char charAt(int index):获取指定索引位置的单个字符
- public int indexOf(String str):查找参数字符串在本字符串中出现的索引位置,如果没有返回-1
字符串中的截取相关方法
-
public String substring(int index):截取从参数位置一直到字符串末尾。返回新字符串。
-
public String substring(int begin,int end):截取从begin开始,一直到end结束,中间的字符串。
备注:[begin,end]包含左边不包含右边
字符串的转换相关方法
- public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值。
- public byte[] getBytes():获得当前字符串底层的字节数组
- public String replace(CharSenquence oldString,CharSenquence newString):将所有出现的老字符串其换成为新的字符串,返回替换之后的结果为新字符串。
备注:CharSenquence可以接收字符串类型
字符串的分割方法
- public String[] split(String regex):按照参数的规则,将字符串切割成为若干部分
注意事项:split方法的参数其实是一个正“则表达式”。今天要主力:如果按照英文句点".“进行切割,必须写”\."(两个反斜杠)才能切割成功。。
练习题目:键盘输入一个字符串,并且统计其中各种字符串出现的次数
种类有:大写字母、小写字母、数字、其他
思路:
- 既然用到键盘输入,肯定用到Scanner
- 键盘输入的是字符串,那么:String str = sc.next();
- 定义四个变量,分别代表四种字符串各自出现的次数。
- 需要对字符串一个字一个字的检查:String->char[],方法是toCharArray()
- 遍历char[] 字符数组,对当前字符的种类进行判断,并且用四个变量进行++动作。
- 打印输出四个变量,分别代表四次出现的次数。
import java.util.Scanner;
public class StringCount {
public static void main(String[] args) {
Scanner <u>sc</u> = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = sc.next();
int countUpper = 0; //大写字母
int countLower = 0; //小写字符
int countNumber = 0; //数字
int countOther = 0; //其他字符
char[] charArray = input.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i]; //当前单个字符
if ('A'<=ch&&ch<='Z') {
countUpper++;
}else if ('a'<=ch&&ch <='z') {
countLower++;
} else if ('0' <= ch&&ch <='9') {
countNumber++;
}else {
countOther++;
}
}
System.out.println("大写字母有:"+countUpper);
System.out.println("小写字母有:"+countLower);
System.out.println("数字有:"+countNumber);
System.out.println("其他字符有:"+countOther);
}
}