java程序员从笨鸟到菜鸟之回顾练习
来源:互联网 发布:淘宝店铺音乐怎么添加 编辑:程序博客网 时间:2024/06/06 03:11
练习1 在1-20之间生成10个不同的随机数
package 测试;//快速导入--shift+ctrl+oimport java.util.ArrayList;import java.util.List;import java.util.ListIterator;/** 题目2:* 获取10个1-20之间的随机数,要求不能重复(flag标志位?)* 分析:* 1---Math类的random生成随机数[0.0,1.0)* 2---集合(保存元素)----equals()判断是否相等* 3---size()集合个数---10* 4---toArray---?* 5---由于目前只学了ArrayList(用此类)* 6---listIterator迭代器遍历* * * 问题来了----集合嵌套概念(下回分解)* */public class MathDemoRandom {public static void main(String[] args) { //从集合的角度去实现,Integer类(valueOf或parseInt)从集合转化为数组 List list=new ArrayList(); //10个随机数 //方式1 while(list.size()<10){ //随机数生成:[1,20]---[-128,127]之间---常量池 int random=(int)(Math.random()*20)+1; list.add(random);//jdk5.0以后的装箱----Integer类型 //只有查过两个元素才去比较 if(list.size()==1){ continue; } //判断 for(int i=0;i<list.size()-1;i++){ //每添加一个就遍历 if(list.get(list.size()-1).equals(list.get(i))){ list.remove(list.size()-1);//删除对应的元素 break;//继续进行While判断 } } } //生成10个随机数后将其转换为数组---toArray() System.out.println(list);//集合输出的形式 Object[] a=list.toArray(); System.out.println("分割线------------------------"); //方式2 //创建迭代器对象(List特有的) ListIterator iterator = list.listIterator(); while(iterator.hasNext()){ Integer integer=(Integer)iterator.next(); int temp=integer.intValue(); System.out.print(temp+" "); } }}练习2
package 测试;//学生类public class Student{private String name;private int age;public Student() {// ctrl+alt+s---c----默认构造方法super();}public Student(String name, int age) {//ctrl+alt+s---o---有参的构造方法super();this.name = name;this.age = age;}//ctrl+alt+s---r----SetXXX,GetXXX方法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 测试;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;//使用ArrayList集合存储自定义对象并遍历(三种方式去实现)public class ArrayListDemo {public static void main(String[] args) { List list=new ArrayList(); Student a1=new Student("张三",23); Student b1=new Student("李四",24); Student c1=new Student("王五",25); Student d1=new Student("麻六",26); //向集合添加元素 list.add(a1);//向上转型 list.add(b1); list.add(c1); list.add(d1); //明白一点:此时List集合中的元素类型是Object,所以get()获得的是object对象 //方式1--for循环--get()+size() for(int i=0;i<list.size();i++){ Student student=(Student)list.get(i); System.out.print(student.getName()+":"+student.getAge()+"--"+" "); } System.out.println(); //方式2---大众化的Iterator Iterator iterator=list.iterator(); while(iterator.hasNext()){ Student student=(Student)iterator.next(); System.out.print(student.getName()+":"+student.getAge()+"--"+" "); } System.out.println(); //方式3---List特有的ListIterator ListIterator listIterator = list.listIterator(); while(listIterator.hasNext()){ Student student=(Student)listIterator.next(); System.out.print(student.getName()+":"+student.getAge()+"--"+" "); } System.out.println(); //方式4---for循环(老美常用) //方式3与方式4的区别:方式4由于迭代器对象是在方法内创建的,更节省内存,但我们更倾向于使用方式3 for(Iterator iterator1=list.iterator();iterator1.hasNext();){ Student student=(Student)iterator1.next(); System.out.print(student.getName()+":"+student.getAge()+"--"+" "); } }}
练习3
package 测试;public class Demo1 {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));//内容}}/* 明白一点:new String在方法区在堆内存开辟空间,而不是在常量池 * 结果:false,true */练习4
package 测试;public class Demo2 {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 a, StringBuffer b) {a.append(b);//x变了,y不变→x:AB---y:Bb = a;//x、y都指向x的对象--→x:AB---y:AB}}/* 明白一点StringBuffer未创建新的对象 * 结果:AB,B * 分析是不是很惊奇,为何不是AB,AB---理解上在方法区开辟了一个新的变量x,y--方法结束后,引用断开(被垃圾回收) * 如果带点迷惑性,将x,y变成a,b呢?你还会"晕倒"吗? */练习5
package 测试;public class Demo3 {public static void main(String[] args) {String str1 = "This is a test!";StringBuffer str2 = new StringBuffer("This is a test!");str1 = str1 + "Hi";str2.append("Hi");System.out.println("str1 == " + str1);System.out.println("str2 == " + str2);}}/* 结果:str1 == This is a test!Hi * str2 == This is a test!Hi * 分析:常量池,堆内存,直接赋值(对象不可改变,只能去创建新的对象) * **/练习6
package 测试;public class TestValue {private static int a;//(1)public static void main(String[] args) {//(2)modify(a);//(3)System.out.println(a);//(5)}public static void modify(int a) {//(4)a++;}}/* * 结果:0 * 分析:成员变量---系统会根据对应数据类型赋值 * 了解静态变量的初始化方式--→熟知的由静态代码块和定义时赋值 * 关于成员方法----使用时才去调用(不管是否静态) * 关于类加载,在静态方法区,先去加载类,再去加载静态成员(对象,变量,静态代码块---不分先后) * */
阅读全文
0 0
- java程序员从笨鸟到菜鸟之回顾练习
- Java程序员从笨鸟到菜鸟之(四)练习
- java程序员从笨鸟到菜鸟之(十二)String练习
- JAVA程序员从笨鸟到菜鸟
- java程序员从笨鸟到菜鸟之(三十三)异常之浅谈
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(序言)+全部链接
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(序言)+全部链接
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(八十四)深入浅出Ajax
- Java程序员从笨鸟到菜鸟之(序言)+全部链接
- Java程序员从笨鸟到菜鸟之(二)面…
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- Java程序员从笨鸟到菜鸟之(十一)多线程讲解
- 总是小情绪,如何扛起责任
- json数据解析获取全国城市并且添加到数据库中(mavean、城市接口)
- JavaScript---ajax为什么要设置requestHeader
- java GUI
- 互联网架构,如何进行容量设计?
- java程序员从笨鸟到菜鸟之回顾练习
- C和指针之函数之可变参数
- Eddy's AC难题 HDU
- LeetCode
- Ubuntu13下调试USB AUDIO的一些记录
- 我的第一个JAVA程序——计算正方形面积
- 习题6.4
- C++实验20
- LeetCode