java.lang包下的内容不需要导包,其他的包都需要import语句
next():是字符串
nextInt():是将输入的字符串数字转换成了对应的int类型
package day_07_Scanner;
import java.util.Scanner; //1.导包
/*
Scanner类的功能:可以实现键盘输入数据,到程序当中
引用类型的一般使用步骤:
1.导包
import 包路径.类名称;
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。
只有java.lang包下的内容不需要导包,其他的包都需要import语句
2.创建
类名称 对象名 = new 类名称();
3.使用
对象名.成员方法名()
获取键盘输入的一个int数字,int num = sc.nextInt();
获取键盘输入的一个字符串:String str=sc.next();
*/
public class DemoScanner {
public static void main(String[] args) {
//2.创建
// 备注:System.in代表从键盘进行输入
Scanner sc=new Scanner(System.in);
// 3.获取键盘输入的int数字
int num=sc.nextInt();
System.out.println("输入的int数字是:"+num);
//4.获取键盘输入的字符串
String str=sc.next();
System.out.println("输入的字符串是:"+str);
}
}
三个不能同时比较,我们两两比较
下面其实可以使用数组来实现(自己写的)
package day_07_Scanner;
import java.util.Scanner;
public class DemoScanner01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a[]=new int[3];
System.out.println("向数组中输入数字:");
for (int i = 0; i < a.length; i++) {
a[i]=sc.nextInt();
System.out.println("第"+(i+1)+"次输入的数据是:"+a[i]);
}
System.out.println("数组中的数字为:");
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
一般情况下,当我们创建一个对象总要给它取一个名字,那么在有些情况下,这个名字可以省略掉。那么没有名字的对象就叫做匿名对象。
匿名对象要用只能用一次,反过来说有些对象只用一次就可以用匿名对象。
代码当中写了3个new,则有3个对象
注意事项:匿名对象只能使用唯一的一次,下次再用不得不再创建一个新对象。
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象。
此前我们说过任何数据类型都能作为方法的参数和返回值。匿名对象也可以作为参数和返回值。
只想输入一次num,可以使用匿名类,匿名类只能用一次。
Random用来产生随机数字(产生的数字没有规律)
Random在生成随机数字的时候总是要短一个,因为它是从0开始,写上一个10代表的是0到9
如果只能猜10次,这里可以使用for循环语句
存储Person类型的对象:
package day_07_对象数组;
/*
题目:
定义一个数组,用来存储3个Person对象。
数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。
*/
public class Demo01Array {
public static void main(String[] args) {
//首先创建一个长度为3的数组,里面用来存放Person类型的对象
//之前的数组定义:int[] array=new int[3];
Person[] array=new Person[3];
//System.out.println(array[0]);//null
Person one=new Person("迪丽热巴",18);
Person two=new Person("古力娜扎",28);
Person three =new Person("赵丽颖",38);
//名字 one、two、three保存的是地址值。如何把这3个人放到数组中?
// 将one当中的地址值赋值到数组的0号元素位置
array[0]=one;
array[1]=two;
array[2]=three;
System.out.println(array[0]);//地址值
System.out.println(array[1]);//地址值
System.out.println(array[2]);//地址值
/*
Person person=array[1];
System.out.println(person.getName());
*/
System.out.println(array[1].getName());//古力娜扎
}
}
数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。
注意:泛型只能是引用类型,不能是基本类型
package day_07_ArrayList;
import java.util.ArrayList;
public class Demo01Array {
/*
数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。
对于Arraylist来说,有一个尖括号代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型
注意:泛型只能是引用类型,不能是基本类型
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号:[]
*/
public static void main(String[] args) {
// 创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
// 备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
ArrayList<String> list=new ArrayList<>();
//尖括号当中写的是String类型,你就要写
System.out.println(list); // [] 里面没有东西,所以只是个中括号,没有内容在中括号里面
//向集合当中添加一些数据,需要用到add方法。
list.add("赵丽颖");
System.out.println(list);//[赵丽颖]
list.add("迪丽热巴");
list.add("古力娜扎");
list.add("马尔扎哈");
System.out.println(list); //[赵丽颖, 迪丽热巴, 古力娜扎, 马尔扎哈]
// list.add(100); //错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就必须都是字符串才行。
}
}
对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。add()返回值代表添加是否成功。但对于其他集合来说,add添加动作不一定成功。
这是之前数组遍历的for循环方式,但是现在是ArrayList集合,它的for循环遍历方式其实也差不多
注意事项:泛型必须是引用类型,不能是基本类型。其实集合里面保存的都是地址值,但是基本类型的数据没有地址值,所以你要是想往里面存储一个int类型是不允许的
如何解决不能向集合当中存储int类型的数据?
答:如果希望向集合ArrayList当中存储基本类型的数据,必须使用基本类型对应的“包装类”
Integer就把它当做int来用就行,只不过泛型的写法变了一下,变成了包装类。这些主要针对基本数据类型的ArrayList
放进去的是一个学生,拿出来的还应该是一个学生。
集合也是可以作为方法的参数的,当集合作为方法的参数的时候,传递进来的这个参数就是地址值,根据地址值就可以.get()拿元素,.size()拿长度。
可以让集合当做方法的参数,还能让集合当做方法的返回值。如果是参数,传递进去的就是地址值;如果是返回值,返还回来的也是地址值。