匿名对象
- 创建对象的标准格式:
类名称 对象名 = new 名称();
- 匿名对象
只有右边的对象,没有左边的名字和赋值运算
new 类名称();
**注意事项:**匿名对象只能使用唯一一次,下次再用不得不再创建一个新对象
使用建议:如果确定一个对象只需要使用唯一一次,就可以使用匿名对象
package Demo04;
public class Person {
String name;
public void showName(){
System.out.println("我叫:" + name);
}
}
package Demo04;
public class Demo16Anonymous {
public static void main(String[] args) {
//左边的是对象的名字
Person one = new Person();
one.name = "小明";
one.showName(); //我叫小明
//匿名对象
new Person().name = "小红";
new Person().showName(); //我叫:null
}
}
使用匿名对象作为方法的参数
package Demo04;
import java.util.Scanner;
public class Demo17 {
public static void main(String[] args) {
//普通使用方式
// Scanner sc = new Scanner(System.in);
// int num = sc.nextInt();
// //匿名对象方式
// int num = new Scanner(System.in).nextInt();
// System.out.println("输入的是:" + num);
// //使用一般写法传入参数
// Scanner sc = new Scanner(System.in);
// methodParam(sc);
//使用匿名对象进行传参
methodParam(new Scanner(System.in));
Scanner sc = methodReturn();
int num = sc.nextInt();
System.out.println("输入的是:" + num);
}
public static void methodParam(Scanner sc){
int num = sc.nextInt();
System.out.println("输入的是:" + num);
}
public static Scanner methodReturn(){
// Scanner sc = new Scanner(System.in);
// return sc;
return new Scanner(System.in);
}
}
Random(生成随机数字)
-
使用步骤
- 导包
import java.util.Random;
- 创建
Random r = new Random( ); //小括号中留空即可
- 使用
-
获取一个随机的int数字(范围是int所有范围,有正负两种):int num = r.nextInt( )
-
获取一个随机的int数字(参数代表了范围,左闭右开区间),int num = r.nextInt(3)
实际上代表的含义是:[0.3) ,也就是0-2
package Demo06;
import java.util.Random;
public class Demo01Random {
public static void main(String[] args) {
Random r = new Random();
int num = r.nextInt();
System.out.println("随机数是:" + num);
}
}
package Demo06;
import java.util.Random;
public class Demo02Random {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 100; i++) {
int num = r.nextInt(10); //范围实际上是0-9
System.out.println(num);
}
}
}
练习1生成1-n
题目要求:根据一个int变量n的值,来获取随机数字,范围是[1,n],可以取到1也可以取到n
思路:
- 定义一个int变量n,随意赋值
- 要使用Random:三个步骤,导包,创建,使用
- 如果写10,那么就是0-9,然而想要的是1-10,所以整体+1即可
- 打印随机数字
package Demo06;
import java.util.Random;
public class DemoRandom {
public static void main(String[] args) {
int n= 5;
Random r = new Random();
for (int i = 0; i < 100; i++) {
int result = r.nextInt(n) + 1;
//本来范围0到n-1,【整体】+1之后变成了1-n
System.out.println(result);
}
}
}
练习2
题目:用代码模拟猜数字小游戏
思路:
-
首先需要产生一个数字,并且一旦产生不再变化。用Random 的nextInt方法
-
需要键盘输入,需要用到Scanner
-
获取键盘输入的数字,用Scanner当中的nextInt方法
-
已经得到了两个数字,判断(if)一下,
如果太大,提示太大,并且重试
如果太小,提示太小,并且重试
如果猜中,游戏结束
-
重试就是再来一次,循环,但是循环次数不确定,用while(true)死循环
package Demo06;
import java.util.Random;
import java.util.Scanner;
public class Demo04RandomGame {
public static void main(String[] args) {
Random r = new Random();
int randomNum = r.nextInt(100) + 1; //这是范围1-100
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入你猜测的数字:");
int guessNum = sc.nextInt(); //键盘输入猜测的数字
if (guessNum > randomNum) {
System.out.println("太大了,请重试");
} else if (guessNum < randomNum) {
System.out.println("太小了,请重试");
} else {
System.out.println("恭喜你,猜中了");
break; //如果猜中,不再重试
}
}
System.out.println("游戏结束");
}
}
对象数组
题目:定义一个数组,用来储存3个person对象
- 但是数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。
package Demo07;
import Demo05.Person;
public class Demo01 {
public static void main(String[] args) {
//首先创建一个长度为三的数组,里面用来存放person类型的对象
Demo01Array[] array = new Demo01Array[3];
Demo01Array one = new Demo01Array("小红",18);
Demo01Array two = new Demo01Array("小明",28);
Demo01Array three = new Demo01Array("小军",38);
//将one当中的地址值赋值到数组的0号元素位置
array[0] = one;
array[1] = two;
array[2] = three;
System.out.println(array[0]); //地址值@4554617c
Demo01Array person = array[1];
System.out.println(person.getName()); //小明
}
}
ArrayList集合
- 数组长度不可以发生改变,但是ArrayList长度是可以改变的
- 对于ArrayList来说,有一个尖括号 < E> 代表泛型
- 泛型,也就是装在集合当中的所有元素,全都是同意的什么类型
- 注意:泛型只能是引用类型,不能是基本类型
- 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容,如果内容是空,得到的是空的中括号
package Demo07;
import java.util.ArrayList;
public class Demo02ArrayList {
public static void main(String[] args) {
//创建一个ArrayList集合,集合名称是List,里面装的全都是String字符串类型的数据
//从JDK1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
ArrayList<String>list = new ArrayList<>();
System.out.println(list); //[]
//向集合中加一些数据
list.add("小红");
System.out.println(list); //[小红]
list.add("小明");
list.add("小军");
System.out.println(list); //[小红, 小明, 小军]
//list.add(100);
//错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的而元素就必须都是字符串才行
}
}
ArrayList的常用方法
-
public bollean add(E e): 向集合中添加元素,参数的类型和泛型一致。返回值代表添加是否成功
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用
-
public E get(int index): 从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
-
public E remove(int index): 从集合当中删除元素,参数是索引编号,返回值就是被删掉的元素
-
public int sive( ): 获取集合大的尺寸长度,返回值是集合中包含的元素个数
package Demo01;
import java.util.ArrayList;
public class Demo01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list); //[]
//向集合中添加元素
boolean success = list.add("小红");
System.out.println(list);
System.out.println("添加的动作是否成功:" + success);
list.add("高圆圆");
list.add("赵又廷");
System.out.println(list); //[小红, 高圆圆, 赵又廷]
//从集合中获取元素:Get.索引值从0开始
String name = list.get(2);
System.out.println("第二号索引位置:" + name);
//从集合中删除元素:remove.索引值从0开始
String whoRemoved = list.remove(2);
System.out.println("被删除的人是:" + whoRemoved);
System.out.println(list);
//获取集合的长度尺寸,也就是其中的元素个数
int size = list.size();
System.out.println("集合的长度是:" + size);
}
}
package Demo01;
import java.util.ArrayList;
public class Demo02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("小红");
list.add("小白");
list.add("小军");
//遍历集合
for (int i = 0;i < list.size();i++){
System.out.println(list.get(i));
}
}
}
ArrayList集合储存基本数据
- 如果希望向集合ArrayList当中储存基本类型数据,必须使用基本类型对应的包装类
基本类型 包装类(引用类型,包装类都位于java.long包下)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean
- 从JDK1.5+ 开始,支持自动装箱,自动拆箱
自动装箱:基本类型 ==》包装类型
自动拆箱:包装类型==》基本类型
ArrayList练习1
- 生成6个1-33的随机整数,添加到集合,并遍历集合
思路:
- 需要存储6个数字,创建一个集合。 < Integer>
- 产生随机数,用Random
- 循环6次,来产生6个随机数字:for循环
- 循环内调用r.nextInt(int n),参数是33,0-32,整体加1才是1-33
- 把数字添加到集合中:add
- 遍历集合:for size get
package Demo01;
import java.util.ArrayList;
import java.util.Random;
public class Demo04 {
public static void main(String[] args) {
ArrayList<Integer>list = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33) + 1;
list.add(num);
}
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList练习2
- 自定义4个学生对象,添加到集合,并遍历
思路:
- 自定义sudent学生类:四个部分:
- 创建一个集合用来存储学生对象。泛型< Student>
- 根据类,创建四个学生对象
- 将4个学生对象添加到集合中:add
- 遍历集合 for size get
package Demo01;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package Demo01;
import java.util.ArrayList;
public class Demo05 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student one = new Student("洪七公",20);
Student two = new Student("一灯大师",21);
Student three = new Student("郭靖",22);
Student four = new Student("黄蓉",23);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
//遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() + ",年龄" + stu.getAge());
}
}
}
ArrayList练习3
- 定义以指定格式打印集合的方法(ArrayList作为参数),使用{}扩起集合,使用@分隔每个元素,格式参照{元素@元素@元素}。
System.out.println(list); [10,20,30]
printArray(list); [10@20@30]
定义方法的三要素
- 返回值类型:只是进行打印而已,没有运算,没有结果,所以用void
- 方法名称:printArrayList
- 参数列表:ArrayList
package Demo01;
import com.sun.org.apache.bcel.internal.generic.ARRAYLENGTH;
import java.util.ArrayList;
public class Demo06 {
public static void main(String[] args) {
ArrayList<String>list = new ArrayList<>();
list.add("张三丰");
list.add("宋远桥");
list.add("张无忌");
list.add("张翠山");
System.out.println(list); //[张三丰, 宋远桥, 张无忌, 张翠山]
printArrayList(list);
}
public static void printArrayList(ArrayList<String>list){
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
if (i == list.size() - 1){
System.out.println(name + "}");
}else{
System.out.print(name + "@");
}
}
}
}
ArrayList练习4
- 用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合中
思路:
- 需要创建一个集合,用来储存int数字:< Integer>
- 随机数字就用Random nextInt
- 循环20次,把随机数字放入大集合:for循环,add方法
- 自定义一个方法,用来进行筛选
筛选:根据大集合,筛选符合要求的元素,得到小集合
三要素:
返回值类型:ArrayList小集合(里面元素不确定)
方法名称:getSmallList
参数列表:ArrayList大集合(装着20个随机数字)
- 判断 if 是偶数:num % 2 = 0
- 如果是偶数,就放到小集合中,否则不放
package Demo01;
import javax.lang.model.type.ArrayType;
import java.util.ArrayList;
import java.util.Random;
public class Demo07 {
public static void main(String[] args) {
ArrayList<Integer> bigList = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 20; i++) {
int num = r.nextInt(100) + 1; //1-100
bigList.add(num);
}
ArrayList<Integer> SmallList = getSamllList(bigList);
System.out.println("偶数共有多少个:" + SmallList.size());
for (int i = 0; i < SmallList.size(); i++) {
System.out.println(SmallList.get(i));
}
}
//这个方法,接收大集合参数,返回小集合结果
public static ArrayList<Integer> getSamllList(ArrayList<Integer> bigList) {
//创建一个小集合
ArrayList<Integer> SamllList = new ArrayList<>();
for (int i = 0; i < bigList.size(); i++) {
int num = bigList.get(i);
if (num % 2 ==0){
SamllList.add(num);
}
}
return SamllList;
}
}
这篇博客介绍了Java中的匿名对象概念,强调其一次性使用的特性,并通过实例展示了如何使用匿名对象作为方法参数。接着讲解了`Random`类生成随机数的方法及练习。然后讨论了对象数组和ArrayList集合,包括其优点、泛型使用以及常用方法。博客还提供了多个ArrayList的实战练习,如生成随机数、储存对象、自定义打印格式以及筛选偶数元素等。

601

被折叠的 条评论
为什么被折叠?



