java练习-(四)

1.需求:请设计一个方法,可以实现获取任意范围内的随机数。
package homework.day_13;

import java.util.Scanner;

public class RandomDemo {

	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		//录入并接收对象
		System.out.println("请输入start的值:");
		int start = sc.nextInt();
		System.out.println("请输入end的值:");
		int end = sc.nextInt();
		//调用产生随机数的方法
		int result = getRandom(start,end);
		System.out.println("result="+result);
	}
	
	public static int getRandom(int start,int end){
		//int nummer = (int)(Math.random()*100)+1;//产生1-100的随机数
		int num = (int)(Math.random()*(end - start + 1))+start;
		return num;
	}	
}
2.下面代码执行的结果是:
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("hello");
System.out.print(s1 == s2);
System.out.print(",");
System.out.println(s1.equals(s2));
}
}

false,true
分析:"=="比较的是两个对象的地址值,new的两个对象在堆内存的地址值不一样;"equals()"方法比较的是两个对象的地址值,但是String类底层重写了equals方法,实际比较的是两个对象的值。

3:下面代码执行的结果是:

public static void main(String arg[]) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a + "," + b);
}
static void operate(StringBuffer x, StringBuffer y) {
x.append(y);//缓冲区的值改变
y = x;   //缓冲区不变,引用改变,但方法结束后局部变量消失,所以引用断开
}
AB,B

分析:StringBuffer会构造一个字符串缓冲区,对于append()没有创建新的对象,在原来的对象中添加内容;方法结束后,局部变量消失

4、下列代码的执行结果是:

String str1 = "This is a test!";
StringBuffer str2 =new StringBuffer( "This is a test!");
str1 = str1+"Hi";   //字符串常量赋值给字符串对象,最终str1的地址值发生了变化,不是“String str1 = "This is a test!";”时的地址值
str2.append("Hi");//append()字符串缓冲区的值改变
System.out.println("str1 == " + str1);
System.out.println("str2 == " + str2);
结果:
str1==This is a test!Hi
str2==This is a test!Hi
分析:字符串的特点:将一个字符串常量赋值给字符串对象,首先在方法区中的字符串常量池中找有没有这个值,有就返回地址值,没有,就在其中开辟空间。

5:下面代码能最后打印的值是?

    public class TestValue {
private static int a;

public static void main(String[] args) {
modify(a);
System.out.println(a);
}

public static void modify(int a) {
a++;
}
}
A)编译错误 B)null C)0        D)1

c)
分析:成员变量,当没有初始化时,系统会根据数据类型初始化,静态成员变量的值一经赋值就不再改变。

6:集合的嵌套遍历

  需求:
  我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student>
  但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。
  而我现在有多个ArrayList<Student>。也要用集合存储,怎么办呢?

定义一个大集合 ArrayList<ArrayList<Student>>
package homework.day_13;

import java.util.ArrayList;

/**
 *集合的嵌套:ArrayList<ArrayList<Student>> 
 */  
public class ArrayListDemo {

	public static void main(String[] args) {
		// 创建大集合对象
		ArrayList<ArrayList<Student>> bigArrayList = new ArrayList<ArrayList<Student>>();
		
		//创建第一个班级的学生集合
		ArrayList<Student> firstArrayList = new ArrayList<Student>();
		
		//创建学生对象
		Student s1 = new Student("zhang",13);
		Student s2 = new Student("wang",14);
		
		//给结合添加成员
		firstArrayList.add(s1);
		firstArrayList.add(s2);
		
		//把第一个班级存储到学生系统中
		bigArrayList.add(firstArrayList);
		
		//创建第二个班级的学生集合
		ArrayList<Student> secondArrayList = new ArrayList<Student>();
		
		//创建学生对象
		Student s3 = new Student("li",15);
		Student s4 = new Student("zhao",16);
		
		//给结合添加成员
		secondArrayList.add(s3);
		secondArrayList.add(s4);
		
		//把第二个班级存储到学生系统中
		bigArrayList.add(secondArrayList);
		
		//遍历
		for(ArrayList<Student> array : bigArrayList){
			for(Student s : array){
				Student stu = s;
				System.out.println(stu.getName()+"----"+stu.getAge());
			}
		}
	}
}

7.获取10个1-20之间的随机数,要求不能重复

package homework.day_13;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

/**
 * 2:获取10个1-20之间的随机数,要求不能重复
 * */
public class RandomTest {

	public static void main(String[] args) {
		// 创建产生随机数的对象
		Random random = new Random();
		
		//使用集合存储产生的随机数,list集合中的元素可以重复
		List list = new ArrayList();
		
		//定义一个统计变量
		int count = 0;
		
		//判断统计变量是否小于10
		while(count<10){
			//生成一个随机数
			int num = random.nextInt(20)+1;
			//判断该随机数在集合中是否存在
			if(!list.contains(num)){
				//不存在,将随机数添加到集合中,并且统计变量++
				list.add(num);
				count++;
			}
		}
		
		//遍历集合
		//获取迭代器对象
		Iterator it = list.iterator();
		while(it.hasNext()){
			System.out.print(it.next()+" ");
		}

	}

}

8.使用ArrayList集合存储自定义对象并遍历(三种方式去实现)

package homework.day_13;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ArrayListTest {

	public static void main(String[] args) {
		// 创建集合对象
		List list = new ArrayList();
		
		//创建学生对象
		Student s1 = new Student("zhang",13);
		Student s2 = new Student("wang",14);
		Student s3 = new Student("zhao",15);
		
		//给集合添加元素
		list.add(s1);
		list.add(s2);
		list.add(s3);
		
		//遍历集合元素
		//方式1:使用Iterator
		Iterator it = list.iterator();
		while(it.hasNext()){
			Student s =(Student)it.next();
			System.out.println(s.getName()+"-----"+s.getAge());
		}
		
		//方式2:使用ListIterator
		ListIterator lit = list.listIterator();
		while(lit.hasNext()){
			Student s =(Student)lit.next();
			System.out.println(s.getName()+"-----"+s.getAge());
		}
		//倒序遍历
		while(lit.hasPrevious()){
			Student s =(Student)lit.previous();
			System.out.println(s.getName()+"-----"+s.getAge());
		}
		
		//方式3:一般的集合遍历(for循环)
		for(int i=0;i<list.size();i++){
			Student s = (Student)list.get(i);
			System.out.println(s.getName()+"-----"+s.getAge());
		}	
	}
}
package homework.day_13;

public class Student {
	private String name;
	private int age;
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(String name, int age) {
		super();
		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;
	}
	
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值