数组
是一种容器可以存放多个变量
特点
- 一种引用类型
- 数组中类型必须一样
- 数组的长度不可改变
- 数组可以作为方法的返回值和输入值(参与的是地址值)
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,构造方法
引用类型一般使用步骤
- 导包
import 包路径.类名称;
- 创建
类名称 对象名 = new 类名称();
- 使用 对象名.成员方法名;
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;
}
}