day3-2020-7-20 数组 面向对象

数组

是一种容器可以存放多个变量

特点

  • 一种引用类型
  • 数组中类型必须一样
  • 数组的长度不可改变
  • 数组可以作为方法的返回值和输入值(参与的是地址值) public static int[] xxx(int[] arry){ return arry}

数组的初始化

  • 动态初始化: 指定长度 格式: 数组类型[] 数组名称=new 数组类型[长度] ;
  • 静态初始化: 指定内容 格式: 数据类型[] 数组名称=new 数组类型[] {元素1,元素2,…};
  • 静态初始化 省略格式: 数据类型[] 数组名称={元素1,元素2,…};
  • 一般不确定数组内容用动态初始化,确定内容用静态初始化。
public class Day3 {

	public static void main(String[] args) {
			//动态初始化
		int[] arry= new int[3];
		System.out.println(arry[0]);//0
			//静态初始化
		int[] arry1=new int[] {1,2,3};
		System.out.println(arry1[0]);//1
		//简便写法
		int[] arry2= {1,2,3};
		System.out.println(arry2[0]);//1
 	}

}

获取数组长度

数组名称.length 得到一个int类型的数字

public class Day3 {

	public static void main(String[] args) {
	int[] arry= new int[3];
	//遍历输出
	for(int i=0;i<=arry.length;i++) {
		System.out.println(arry[i]);
	}
 	}
}
public class Day3 {

	public static void main(String[] args) {		
		int[] arry={1,2,5,8,9,6,3,1,4,58,7,41,5,2,45,36,5};
		int max=arry[0];
		for(int i=1;i<arry.length;i++) {
			if(arry[i]>max) {
				max=arry[i];
			}
		}
		System.out.println(max);
	}

}

例题
数组元素反转

		//数组反转
		public class Day3 {

	public static void main(String[] args) {
		int temp=0;
		int[] arry= {1,2,3,4,5,6,7,8};
		for(int i=0;i<arry.length/2;i++) {
			temp=arry[i];
			arry[i]=arry[arry.length-1-i];
			arry[arry.length-1-i]=temp;
		}
		for(int i=0;i<arry.length;i++) {
			System.out.println(arry[i]);
		}
		
	}

}

面向对象

面向对象和面向过程

面向过程:当需要一个功能时,没一个步骤都需要实现,详细处理每一个细节
面向对象:当需要一个功能时,找一个已经有该功能的人来实现

类和对象

类:对一类事物的描述,抽象的 对象的模板
对象:一类事物的实例,具体的 类的实体

注意事项:

  • 成员变量定义在方法外
  • 成员方法没有static方法
  • 一个class中只有一个public class(和文件名一样)
  • 对象类型可以作为方法参数 public static void method(Student stu){}
    传递的时地址
  • 对象类型可以作为方法返回值 public static Student method(){return Student}
    传递的时地址

类的使用

1,导包,将需要的类带入import xxx.xx.xx.x
注:当该类和需要的地方为同一包下则不需要写
2,创建
格式: 类名称 对象名 =new 类名称();
3,使用
对象名.xxx

public class Day3 {
//定义在同一个class下
	public static void main(String[] args) {
		Student stu=new Student();
		stu.eat();
	}
}
class Student {
	int age;
	String name;
	public void eat() {
		System.out.println("eat");
	}
}

成员变量和局部变量

区别

局部变量成员变量
定义在方法内部定义在方法外部
只有在方法中可以使用整个类可以通用
没有默认值默认值0,null
位于栈内存位于堆内存
随着进栈出栈而产生消失随着对象创建和消失而产生消失

面向对象三大特征之封装

  • 方法就是一种封装
  • 关键词 private 封装

private 使得在本类可以使用,但本类之外不可以直接访问。
private 封装时Boolean值getter方法写成isXxxx

public class Day3 {

	public static void main(String[] args) {
		Student stu=new Student();
		stu.eat();
		stu.setAge(12);
		stu.setSex(false);
		System.out.println(stu.isSex());
		System.out.println(stu.getAge());
		
	}
	 
}
class Student {
	private int age;
	String name;
	private boolean sex;
	public void eat() {
		System.out.println("eat");
	}
	public void setAge(int num) {
	if(num>0 && num<100) {
		age=num;
		}else {
		System.out.println("请重新输入:");
		}
	}
	public int getAge() {
		return age;
	}
	public void setSex(boolean b){
	sex=b;
	}
	public boolean isSex(){
	return sex;
	}
}

This关键字

当局部变量和成员变量重名的时候,采用就近原则使用
当需要本类中的成员变量时,可以采用this关键字: this.变量名

构造方法

  • 构造方法名称和所在类的名称完全一样
  • 构造方法没有返回值,即没有void int return…
  • 当没有有参构造时不需要无参构造,但是有有参构造时必须要写无参构造
  • 构造方法可以重载
public class Day3 {

	public static void main(String[] args) {
		Students STU=new Students();//无参构造实现!
		Students Stu=new Students(5,"abc");//有参构造!		
	}	 
}
class Students {
	private int age;
	private String name;
	//构造方法
	public Students() {
		System.out.println("无参构造实现!");
	}
	public Students(int age,String name) {
		System.out.println("有参构造!");
		this.age=age;
		this.name=name;
	}
}

一个标准的类
1,成员变量(private修饰),成员方法
2,getter setter 方法
3,构造方法

引用类型一般使用步骤

  1. 导包 import 包路径.类名称;
  2. 创建 类名称 对象名 = new 类名称();
  3. 使用 对象名.成员方法名;

scanner

import java.util.*;		//导包
public class Day3_2 {

	public static void main(String[] args) {
			//创建
		Scanner sc=new Scanner(System.in);		//System.in 代表从键盘输入
		int num=sc.nextInt();					//得到int输入
		System.out.println(num);				//输出
		String str=sc.next();					//得到string输入
		System.out.println(str);				//输出
	}

}

匿名对象

普通创建对象:类名称 对象名 = new 类名称();

匿名对象只有右边的对象,没有左边的名字和赋值运算符: new 类名称();

public class Day3_2 {

	public static void main(String[] args) {
		Student Stu=new Student();   //标准创建
		Stu.eat();	//匿名对象  eat
	}	
}
class Student {
	private int age;
	String name;
	public void eat() {
		System.out.println("eat");
	}
	public void setAge(int num) {
		if(num>0 && num<100) {
		age=num;
		}else {
			System.out.println("请重新输入:");
		}
	}
	public int getAge() {
		return age;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值