一、集合与面向对象
一维数组
变量:在iava程序中,当需要存储单个数据内容时,需要声明一个变量,声明变量的本质就是在内存空间中申请块存储单元
概念:在java程序中,当需要存储多个数据类型相同的内容时,则需要声明一个数组。声明数组的本质,就是在内存中申请一段连续的存储单元。
数组中的名词:
数据类型变量名=初始值声明变量:
数组名:数组中变量的名称
数组的长度:数组名length;
数组中的元素:数组当中值
数组角标(下标):数组的下标从0开始ArraylndexOutOfBoundException 数组下标越界异常
声明数组的格式:
数据类型[]数组名= new 数据类型[ 数组的长度];
注意: 在数组声明时,如果不给数组直接赋值,那么,byte/short/int/long/的默认值为0,float和double的默认值为0.0,特别需要注意的是布尔类型的默认值为false;
双色球案例: 六个红球,范围1~33;一个蓝球,范围1~17
import java.util.Random; public class DoubleColorBall { public static void main(String[] args) { int[] arr = new int[7]; //创建随机数 Random random = new Random(); //向数组中去添加值,6个红球,范围1~33 for (int i=0; i < arr.length-1;i++){ arr[i] = random.nextInt(33)+1; //去重 for (int j=i-1; j >= 0;j--){ if (arr[i] == arr[j]){ //表示号码重复,重新摇号 i--; break; } } } //蓝球 arr[arr.length-1] = random.nextInt(17)+1; //将数组中的双色球遍历 System.out.println("本期中奖结果:"); for (int i=0; i < arr.length;i++){ System.out.print(arr[i] + " "); } } }
对象语法格式
1. new 引用数据类型();
案例://表示创建一个Person类型的对象newPerson);
类:简单来说类就是"分类",是指具有相同特征和行为的多个事物共性的抽象,在java中表现为一种引用数据类型,其中包含描述特征的成员变量和描述行为的成员方法语法格式:
2.权限修饰符 class 类名类体;
案例:class Personf{类体;}
3.注意:通常情况下,类名的首字母要大写,当类名由多个单词构成时,每个单词的首字母都要大写;[驼峰命名法]
4.成员变量(特征、属性)
语法格式:[权限修饰符] 数据类型 成员变量 成员变量值;
其中等号和成员变量值可以省略,通常情况下都省略,分号不可以省略 。
二、面向对象三大特征
1.this关键字(原理、理解)
基本概念在构造方法中和成员方法中访问成员变量时,编译器会加上this.的前缀,而this.相当于汉语中我的,当不同的对象调用同一个方法时,由于调用方法的对象不同导致this关键字不同,从而this.方式访问的结果也就随之不同
2.使用方式
(1)当形参变量名与成员变量名相同时,在方法体中会优先使用形参变量(就近原则),若希望使用成员变量,则需要在成员变量的前面加上this.的前缀,明确要求该变量是成员变量。
(2)在构造方法的第一行可以使用this的方式来调用本类中的其它构造方法(了解)。
3.封装
基本概念:通常情况下可以在测试类给成员变量赋值一些合法但不合理的数值,无论是编译阶段还是运行阶段都不会报错给出提示,此时与现实生活不符。为了避免上述错误的发生,就需要对成员变量进行密封包装处理,来隐藏成导的细书及保证成员变量数值的合理性.该机制就叫封装。
public class Person { private String name; private int age; public Person(){} public Person(String name,int age){ setName(name); setAge(age); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if(age > 0 && age < 150){ this.age = age; }else{ this.age = 18; System.out.println("你输入的年龄有误"); } } public void show(){ System.out.println("姓名" + name + "年龄" + age); } } public class PersonTest { @Test public void test01(){ Person person = new Person(); person.setName("zf"); person.setAge(-3); person.show(); } @Test public void test02() { Person p = new Person("WRC",-1); p.show(); } }