java学习第三天
数组
一、数组的概念
数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
二、数组的定义方式
1、方式一
int[] arr = new int[3]; //定义可以存储3个整数的数组容器
2、方式二
int[] arr = new int[]{1,2,3,4,5}; // 可以先声明,后赋值
3、方式三
int[] arr = {1,2,3,4,5}; // 声明和赋值同一行
三、java虚拟机的内存划分
四、数组的常见操作
1、越界操作
public static void main(String[] args) {
int[] arr = {1,2,3};
System.out.println(arr[3]); // 抛出异常
}
2、空指针异常
public static void main(String[] args) {
int[] arr = {1,2,3};
arr = null;
System.out.println(arr[0]);
}
3、遍历数组
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
4、数组获取最大值元素
public static void main(String[] args) {
int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
//定义变量,保存数组中0索引的元素
int max = arr[0];
//遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
//遍历到的元素和变量max比较
//如果数组元素大于max
if (arr[i] > max) {
//max记录住大值
max = arr[i];
}
}
System.out.println("数组最大值是: " + max);
}
5、数组的反转
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
/*
循环中定义变量min=0最小索引
max=arr.length‐1最大索引
min++,max‐‐
*/
for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {
//利用第三方变量完成数组中的元素交换
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
// 反转后,遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
对象
一、面向对象的特征
* 封装性
* 继承性
* 多态性
二、类和对象的关系
* 类是对一类事物的描述,是抽象的
* 对象是一类事物的实例,是具体的
* 类是对象的模板,对象是类的实体
1、类的定义格式
- java
pubic class Student {
String name;
int age;
// 方法
public void study() {
Sysm.out.println('好好学习,天天向上')
}
}
- typeScript
public class Student {
name: string;
age: number;
public study(): void {
console.log('好好学习,天天向上')
}
}
2、类的使用
public class Test01_Student {
public static void main(String[] args) {
//创建对象格式:类名 对象名 = new 类名();
Student s = new Student();
System.out.println("s:"+s); //cn.itcast.Student@100363
//直接输出成员变量值
System.out.println("姓名:"+s.name); //null
System.out.println("年龄:"+s.age); //0
System.out.println("‐‐‐‐‐‐‐‐‐‐");
//给成员变量赋值
s.name = "赵丽颖";
s.age = 18;
//再次输出成员变量的值
System.out.println("姓名:"+s.name); //赵丽颖
System.out.println("年龄:"+s.age); //18
System.out.println("‐‐‐‐‐‐‐‐‐‐");
//调用成员方法
s.study(); // "好好学习,天天向上"
s.eat(); // "学习饿了要吃饭"
}
}
3、成员变量和局部变量的区别
* 在类中的位置不同 `重点`
- 成员变量:类中,方法外
- 局部变量:方法中或者方法声明上(形式参数)
* 作用范围不一样 `重点`
- 成员变量:类中
- 局部变量:方法中
* 初始化值的不同 `重点`
- 成员变量:有默认值
- 局部变量:没有默认值。必须先定义,赋值,最后使用
* 在内存中的位置不同 `了解`
- 成员变量:堆内存
- 局部变量:栈内存
* 生命周期不同 `了解`
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
三、封装
1、步骤
* 使用 private 关键字来修饰成员变量。
* 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。
- private的含义
* private是一个权限修饰符,代表最小权限。
* 可以修饰成员变量和成员方法。
* 被private修饰后的成员变量和成员方法,只在本类中才能访问。
2、实例代码
- 使用
private
修饰成员变量,代码如下:
public class Student {
private String name;
private int age;
}
- 提供
getXxx
方法setXxx
方法,可以访问成员变量,代码如下:
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
3、this关键字
* this代表所在类的当前对象的引用(地址值),即对象自己的引用。
* 方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。