⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java4.txt

📁 达内IT培训Core Java全部笔记 是学习Java编程的好东西
💻 TXT
📖 第 1 页 / 共 2 页
字号:
sd 0804 Javaday4   2008年6月13日7个随机数作业:/**作业:
完成下面的代码
package com.tarena.day03;

public class TestRan {

	public static void main(String[] args) {
		Math.random();	//[0,1)的随机数
		int temp = (int)(Math.random()*36+1);	//[1,37)
		System.out.println(temp);
		//要求生成7个无重复的随机数
		int[] t = new int[7];
	}

}
*/方法一   常规--------------------------------------------------------------------------------------import java.util.Arrays;public class TestRan {	public static void main(String[] args) {		int[] nums = new int[7];//申请一个数组空间,应为要返回一个随即数组		out:for(int i=0; i<nums.length; i++){//   xx.length  比直接写数字方便扩展				int temp = (int)(Math.random()*36+1);/*用产生一个0.0~1.0的随机数,确定1到37之间的范围,转换成int整数(要返回整数),再赋给temp*/				nums[i] = temp;//把值给申请的数组				for (int j = 0; j < i; j++) {/*j<i产生不重复的数数组  **/					if(temp==nums[j]){/*钳套一个条件**/						--i;//						continu out;//out标号					}				}		}		Arrays.sort(nums);//		for (int j = 0; j < nums.length; j++) {//数组排重输出			System.out.print(nums[j]+" ");	/*print(char[] s)打印字符数组。按照平台的默认字符编码将字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。*/						}	}}方法二             C++高级编程员--------------------------------------------------------------------------------------public class TestRan {	public static void main(String[] args) {		int[] t = new int[7];/*弄一个数组T*/		int[] temp = {1,2,3,4,5,6,7};//要 排 的数组		for(int i=0; i<t.length; i++){			int index = (int)(Math.random()*(7-1));	//生成 [0,7) 的随机数  7-1相当于0~6的下标			t[i] = temp[index];//随机下标赋给数组t			temp[index] = temp[7-1-i];//排序,保证每次不重复		}				for (int i = 0; i < temp.length; i++) {			System.out.print(t[i]+" ");/*print(char[] s)打印字符数组。按照平台的默认字符编码将字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。*/					}	}}方法三     java 程序员--------------------------------------------------------------------------------------import java.util.HashSet;//用类库HashSetpublic class TestRan {	public static void main(String[] args) {		HashSet hs = new HashSet();			//HashSet是无重复元素,new一个名为hs		while(true){//返回: 该集合还不包含指定元素,则返回 true。			int temp = (int)(Math.random()*7);//产生一个随机数			hs.add(""+temp);//如果此集合中还不包含指定元素,则添加指定元素。			if(hs.size()==7)//if果==7   size() 返回此集合中的元素的数量(集合的容量)。				break;		}		System.out.println(hs);--------------------------------------------------------------------------------------多态:一个名字多种形态。1.基本类型多态	主要针对数字(8种)2.方法多态(重载,重写,覆盖)3.类多态(类相关)4.参数多态	在传参时发生的基本类型多态或类多态Person p = new Student			  new	Person只要是Person类的子类都可以new ******************************************************一个类可以指向自身的对象,也可以指向任意一个子类对象,这叫类多态要指向子类才构成多态,父类的变量指向子类的对象在类多态时,只能使用在父类中生命的属性和方法,子类自身的属性和方法(非继承的东西)无法使用,相当于子类当作父类使用编译的时候按父类编译,运行时按子类运行******************************************************类多态能够让参数的传递更加灵活引用类型的类型转换:不能随意转换原则:引用类型的类型转换本质上是一种还原操作,还原堆内存中对象的本来面目变量类型一经声明就无法改变,想要改变就申请一个新变量--------------------------------------------------------------------------------------package com.tarena.day04.po;//打包public class Person {//建类Person  特征名字,年龄 --属性,行为--方法。		private int age;//属性 [修饰符] 类型 属性名 [默认值]		private String name;//属性[private publkilc ] 类型   属性名 [默认值]		public void setAge(int age){//get得到   set设置  /*方法的格式[修饰符]返回类型  方法名([参数列表])[抛出异常]{方法体}**/			this.age = age;//引用,指向自己,表示调用本类中的方法,(还可以调属性和构造)  能出现在构造里		}		public int getAge(){//构造: /*[修饰符] 类名([参数列表])[抛出异常]{构造体}*/			return age;//		}}package com.tarena.day04.po;--------------------------------------------------------------------------------------public class Student extends Person{//类与类继承 [修饰符] class + 新类名 +extends + 父类类名{类体}		private int id;//封装 设私有		public void setId(int id){//提供方法public set设置属性			this.id = id;		}		public int getId(){//get得到属性			return id;		}//继承在逻辑上是“is”关系。  好处:1.子类可以复用父类,2.是多态的基础		public static void main(String[] args){//一个类只能有一个父类			Person p = new Student();		//多态:父类对象p指向子类对象new的一个空间时发生多态。			p.setAge(23);//调用父类属性p设置的年龄,并赋给他个23。			//p.setId(2);	在Person中没有,所以无法调用			Student s = (Student)p;				//引入一个新变量s等于Student类型,与p指向同一个new副本			s.setId(2);//调用副本,赋2给S			//p.setId();	还是不可以,因为p中还是没有setId,变量类型一经声明就无法改变		}}--------------------------------------------------------------------------------------引用类型转换:1.必须发生在父子类之间2.子转换成父会自动完成(隐式)3.父转换成子要显式,注明(还原操作)4.通常类型转换前要使用instanceof 先判断instanceof 返回boolean 类型,向父类兼容格式:(变量名 instanceof 类名)--------------------------------------------------------------------------------------package com.tarena.day04.po;public class Student extends Person{		private int id;		public void setId(int id){			this.id = id;		}		public int getId(){			return id;		}		public static void main(String[] args){			Person p = new Student();		//多态			p.setAge(23);			//p.setId(2);	在Person中没有,所以无法调用			if(p instanceof Student){/*判断类型是否匹配,instanceof 返回boolean 类型,向父类兼容*/			   Student s = (Student)p;//引入一个新变量s等于Student类型,与p指向同一个new副本			   s.setId(2);			}//变量名instanceof 类名,返回boolean类型			if(p instanceof Person){	//instanceof是向父类兼容					System.out.println("is Person");			}			if(p instanceof Object){					System.out.println("is obj");			}			//p.setId();	还是不可以,因为p中还是没有setId,变量类型一经声明就无法改变		}}输出结果:is Personis obj--------------------------------------------------------------------------------------重写:只有方法可以重写当父类方法不满足子类需要的时候,可以对父类的方法进行重写或覆盖该方法重写的语法要求(继承):1.具有相同的方法名称2.具有相同的参数列表3.具有相同的返回类型(JDK 5.0以后支持返回子类 )4.访问权限不能更严格*****5.不能抛出更大的异常*****@Override重写方法时保证正确性--------------------------------------------------------------------------------------package com.tarena.day04.po;public class Student extends Person{		private int id;		public void setId(int id){			this.id = id;		}		public int getId(){			return id;		}		@Override//重写方法时可以保证正确性,这句能让编译器检测下面的方法是重写		public String showName() {			//在子类中重写父类的方法			return super.showName()+"同学";		}		public static void main(String[] args){			Person p = new Student();		//多态			p.setAge(23);			//p.setId(2);	在Person中没有,所以无法调用			if(p instanceof Student){					//判断类型是否匹配			   Student s = (Student)p;				//引入一个新变量s等于Student类型,与p指向同一个new副本			   s.setId(2);			}//变量名instanceof 类名,返回boolean类型			if(p instanceof Person){	//instanceof是向父类兼容					System.out.println("is Person");			}			if(p instanceof Object){					System.out.println("is obj");			}			//p.setId();	还是不可以,因为p中还是没有setId,变量类型一经声明就无法改变		}}--------------------------------------------------------------------------------------package com.tarena.day04.po;public class Test {	public static void main(String[] args) {		Student s = new Student();		System.out.println(s.showName());		Person p = new Student();		System.out.println(p.showName());	//编译时认为是父类,运行时实际上是子类方法	}}运行结果:null同学null同学--------------------------------------------------------------------------------------当重写的时候碰到类多态,那编译的时候会认为是父类的方法,而实际执行时是调用子类方法,如上

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -