2021-04-09

一,数组的练习
package cn.tedu.basic;

import java.util.Arrays;
import java.util.Random;

//1.自己实现 获取数组里的最小/大 值
//2.统计取数组里所有数字的总和、平均值
public class Arrayss {
	public static void main(String[] args) {
		int[] suiji = method();//产生随机数的数组
//		method2(suiji);//获取数组里的最小/大 值
		method3(suiji);//获取数组里总和、平均值
	}
	//获取数组里总和、平均值
	public static void method3(int[] a) {
		int sum = 0 ;//定义遍历,记录和
		//1,遍历数组,获取每个数字a[i]
		for (int i = 0; i < a.length; i++) {
			sum = sum + a[i] ;
		}
		System.out.println("总和是: "+sum);
		System.out.println("平均值是: "+ 1.0*sum/a.length);
	}
	//获取数组里的最小/大 值
	public static void method2(int[] a) {
		int min = a[0] ;//定义变量,记录最小值,假设a[0]最小,不对就改
		int max = a[0] ;//定义变量,记录最大值,假设a[0]最大,不对就改
		//1,遍历数组,获取每个数字a[i] 
		for (int i = 0; i < a.length; i++) {
			//遇到了比max还大的就改掉max的值
			if(a[i] > max) {
				max = a[i];
			}
			//遇到了比min还小的就改掉min的值
			if(a[i] < min) {
				min = a[i] ; 
			}
		}
		System.out.println("最小值是: "+min);
		System.out.println("最大值是: "+max);
	}
	//产生随机数的数组
	public static int[] method() {
		//1,创建数组
		int a[] = new int[10];
		//2,遍历数组
		for (int i = 0; i < a.length; i++) {
			//把每个位置的元素,从默认值修改成 随机数
			a[i] = new Random().nextInt(100);
		}
		//3,打印数组里的数据
		System.out.println( Arrays.toString(a));
		return a;
	}
	
}

二,封装
–1,概述
封装是指隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式。
–2,测试
–创建Student类
package cn.tedu.oop;
//测试 封装-private
//总结:
//1,通过private关键字,实现封装,提高资源的安全性(只能在本类里访问)
//2,当属性被private后,需要提供public的getXxx()获取值/setXxx()设置值
//3,当方法被private后,需要提供间接的访问方式
public class Student {
//TODO Fields–成员变量/实例变量
//1,通过private关键字,实现封装,只能在本类中访问使用,别的类用不了.提高了安全性
private String name;
private int no;
private char sex;
//5,Eclipse自动生成get/set
//右键source-generate getters and setters-select all-ok
//3,给外界提供 获取方式get()
public String getName() {
return name;//给外界返回name属性的值
}
//4,给外界提供设置方式set()
public void setName(String name) {
this.name = name;//给name属性赋值
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}

			//TODO Methods--方法/函数
		//1,通过private关键字,实现封装,只能在本类中访问使用,别的类用不了.提高了安全性
			private void coding() {
				System.out.println("我爱Java");
			}
			public void game() {
		//2,因为coding()被封装了,只能在本类中访问,给外界提供间接的访问方式
				coding();
				System.out.println("王者");
			}
		}

	--创建测试类
		package cn.tedu.oop;
		//测试 封装
		public class Test1 {
			public static void main(String[] args) {
				//TODO 创建Student对象
				Student s = new Student();
				//调用方法
		//		s.coding();//因为coding()被封装了,无法使用
				s.game();
				//设置属性
		//		s.name = "蔡徐坤";//因为name被封装了,无法使用
		//		s.no = 100;
		//		s.sex = '男' ;
				s.setName("渣渣辉");//设置值
				s.setNo(1);
				s.setSex('男');
				//获取属性
		//		System.out.println(s.name);//因为name被封装了,无法使用
		//		System.out.println(s.no);
		//		System.out.println(s.sex);
				System.out.println(s.getName());//获取值
				System.out.println(s.getNo());//获取值
				System.out.println(s.getSex());//获取值
			}
		}

三,构造方法
–1,概述
也是方法,是一个特殊的方法,因为语法/用法/作用都和普通方法不一样
//普通方法语法:修饰符 返回值 方法名([参数列表]){方法体}
//普通方法作用:主要用来完成指定的业务
构造方法语法:构造方法语法:修饰符 类名([参数列表]){方法体}
构造方法作用:主要用来完成对象的创建 和 对象的初始化
–2,测试
package cn.tedu.oop;
//测试 构造方法
//总结:
//1,作用: 可以用来new + 可以给成员变量赋值
//2,语法: 修饰符 类名([参数列表]){方法体}
//3,构造方法什么时候被触发? – new时
//4,构造方法会隐藏着一个 无参的 构造方法,但是当只提供含参构造方法时,无参构造就没有了
//5,为了外界new的方便两个,可以提供重载的构造方法
//6,如果把构造方法private,那就只能在本类访问,外界无法new
public class Test2 {
public static void main(String[] args) {
//3,创建对象/实例化 时自动触发 构造方法
new Person();//自动触发 无参 的构造方法
new Person(“赵丽颖”);//自动触发 String 的构造方法
new Person(100);//自动触发 int 的构造方法
new Person(“jack”,100);//自动触发 String和int 的构造方法
}
}
//TODO 构造方法–修饰符 类名([参数列表]){方法体}
class Person {
//1,无参的 构造方法,默认就存在的,是隐藏的(前提是:不能只提供含参构造)
public Person(){}
//2,构造方法是一个特殊的方法,可以方法重载
//重载:在一个类里的 方法名相同,但是参数列表不同 现象–灵活
private String s ;
public Person(String name){
s = name;//3,利用构造方法,给成员变量赋值
System.out.println(name);
}
public Person(int age){
System.out.println(age);
}
public Person(String name,int age){
System.out.println(name+age);
}

	}

四,构造代码块
–1,概述
代码块是一段代码 被花括号包起来
代码块根据出现的位置不同,语法用法作用都不同
出现在成员位置(类里方法外)的代码块–构造代码块
出现在局部位置(方法里)的代码块–局部代码块
–2,测试
package cn.tedu.oop;
//测试 构造代码块
//总结:
//1,构造代码块:作用是提取构造方法的共性代码+位置是在类里方法外
//2,构造方法:作用是new/赋值+位置是在类里方法外
//3,局部代码块:作用是控制变量的作用范围+位置是在方法里
//4,执行的顺序:
//当new时,先执行 构造代码块 再执行构造方法
//当方法被调用时,才执行 局部代码块
public class Test3 {
public static void main(String[] args) {
//TODO 2,创建对象测试
new Teacher();
new Teacher(10);
new Teacher(“jack”);
new Teacher(‘中’);
new Teacher(“jack”,20);
}
}
class Teacher{
//TODO 2,构造代码块:位置是在成员位置
//new时被触发而且在构造方法前+用来抽取构造方法的共性
{
//提取了所有构造方法里的重复代码–提高了代码的复用性
System.out.println(“中国人”);
System.out.println(“构造代码块”);
}

	//TODO 1,构造方法/Constructors...
		public Teacher() {
		}
		public Teacher(int a) {
		}
		public Teacher(String b) {
		}
		public Teacher(char c) {}
		public Teacher(String a,int b) {}
		
		public void show() {
			int a = 0; //局部变量
			//3,局部代码块--位置是在方法里+用来控制变量的作用范围
				//当方法被调用时,才能触发
			{
				int b = 10;
				System.out.println("局部代码块");
			}
	//		System.out.println(b);//超出作用域了,用不了
			System.out.println(a);//可以用,在使用范围内
		}
	}

五,this关键字
–1,概述
是一个类里的现象。
互相调用,本类的资源,可以使用this,通常可以省略不写。
两种情况必须写this:当变量名相同时 + 构造方法间调用时
–2,测试
package cn.tedu.oop;
//测试 this关键字
//总结:
//1.this代表本类对象的一个引用,相当于this帮你创建了一个本类的对象
//2.this可以调用同一个类里的所有资源(成员变量/方法/构造方法)
//3,this使用的第一个场景是:用来区别同名的成员变量和局部变量,this调用的一定是成员变量
//4,this使用的第二个场景是:用来在构造方法间互相调用
//位置必须是第一条语句+不能形成类似于死循环的样子
public class Test4 {
public static void main(String[] args) {
new Animal();
}
}
class Animal{
public Animal() {
//4,在 无参构造 调用 含参构造
// this(1);//5,构造方法里,如果出现this,必须是第一条语句
this(“10”);
System.out.println(“无参 构造方法”);
}
public Animal(String a) {
System.out.println(“含参 构造方法”+a);
}
public Animal(int a) {
//3,在 含参构造 调用 无参构造
this();
System.out.println(“含参 构造方法”+a);
}

		String name ="rose";//成员变量
		
		public void eat() {
			String name ="jack";//局部变量
			//1,变量使用的就近原则,优先使用局部变量,jack
			System.out.println(name);
	//2,this底层帮你创建了本类对象,Animal this = new Animal();
	//this代表本类对象的一个引用,this的场景1:
	//当局部变量名 和 成员变量名相同时,通过this 调用成员变量
			System.out.println( this.name );//成员变量rose
		}
		
	}

六,继承
–1,概述
继承是面向对象最显著的一个特性。
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并 能扩展新的能力。
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增 加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类/超类/ 基类。
–2,测试
package cn.tedu.oop;
//测试 继承
public class Test5 {
public static void main(String[] args) {
//TODO 3,创建子类对象测试
Dog d = new Dog();
d.eat();//用了父类的
d.sleep();//用了父类的
// System.out.println( d.sifangmoney );//不能继承父类的私有成员

			//TODO 继承的传递性
			DaHuang dh = new DaHuang();
			dh.eat();//用了爷爷类里的功能
			dh.sleep();//用了爷爷类里的功能
			dh.kanjia();//用了父类里的功能
		}
	}
	//1,创建父类--提取子类的所有共性的代码/提高了父类里代码的复用性
	class Animal2{
		//2.3,不能继承父类的私有成员
		private double sifangmoney = 5;
		public void eat() {
			System.out.println("啥都行");
		}
		public void sleep() {
			System.out.println("在睡觉");
		}
	}
	//2,创建子类--使用extends关键字,继承父类后,减少了代码的编写
	class Dog extends Animal2{
		public void kanjia() {}
		//2.2,java只支持单根继承
		//2.1,相当于子类把父类的功能复制了一份
	}
	class DaHuang extends Dog{
		//2.2,java只支持单根继承
		//2.1,相当于子类把父类的功能复制了一份
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值