一、学习目的
通过今天的学习来掌握数组的定义方式和基本使用,感受与C语言数组中的异同,以及初步认识类与对象的概念,如何创建一个对象,类里面如何定义变量和方法和理解创建对象的内存表现。
二、数组的定义相关
1. 数组的两种定义方式(静态和动态)
//引用类型:除char short int float long double byte以外都是引用类型
//数组一但被定义 大小就确定了 无法更改
//静态
int[] score = {1,2,3};
String[] names = {"jack","marry"};
//动态 内容动态添加
float[] height = new float[5];
height[0] = 180.0f;
height[1] = 170f;
2. 数组定义之后在内存中的表现形式
表现形式
3. 数组的基本使用
Random r = new Random();
int num = r.nextInt(100);
//尽量不要扩大变量的作用域
int[] count = new int[10];
for (int i = 0;i <10;i++){
count[i] = r.nextInt(100);
}
4. 遍历数组的3种方式
for循环,关注元素是第几个
foreach快速循环,不关注元素是第几个
Arrays.toString(数组名),主要用于测试
//数组的遍历
//数组输出方式1 关注第几个
for (int i = 0;i < 10;i++){
System.out.print(count[i]+" ");
}
System.out.print("\n");
//数组输出方式2 快速循环 不关注第几个
for (int temp:count
) {
System.out.print(temp+" ");
}
System.out.print("\n");
//数组输出方式3 用来测试
System.out.println(Arrays.toString(count));
System.out.print("\n");
5. 猜数游戏(Java实现)
主程序代码:
class GuessNumber{
public static void main(String[] args){
//定义一个数组
int[] originalArray = new int[4];
//保存用户输入的猜测数字
int[] guessArray = new int[4];
//产生4个随机数
Random random = new Random();
for (int i = 0;i < 4;i++){
//产生1个随机数
int temp = random.nextInt(10);
//判断是否存在
boolean result = contains(originalArray,temp);
if (result){
//确保i对应的位置能够得到一个不重复的数字
i--;
}else{
originalArray[i] = temp;
}
}
//排序
Arrays.sort(originalArray);
System.out.println(Arrays.toString(originalArray));
//定义一个Scanner对象
Scanner scanner = new Scanner(System.in);
//开始游戏
while (true){
int countA = 0;
int countB = 0;
System.out.print("请输入猜测的数字:");
for (int i = 0;i < 4;i++){
guessArray[i] = scanner.nextInt();
}
//判断用户输入
//1.判断是否存在 2.位置是否相同
for (int i = 0;i <4;i++){
boolean result = contains(guessArray,originalArray[i]);
if (result){
//数字存在
//判断位置是否相同
int index = indexOf(guessArray,originalArray[i]);
if (index == i){
//数字位置都相同
countA++;
}else{
countB++;
}
}
}
if (countA == 4){
System.out.println("Congratulations!!");
break;
}else{
System.out.println(countA+"A"+countB+"B");
}
}
}
在一个数组里面查找某个值的索引值:
/**
* 在一个数组里面查找某个值的索引值
* @param var 数组
* @param obj 查找的对象
* @return 索引值
*/
public static int indexOf(int[] var,int obj){
for (int i = 0;i < var.length;i++){
if (var[i] == obj){
return i;
}
}
return -1;
}
自己写一个方法判断一个数组是否包含某个值:
//自己写一个方法判断一个数组是否包含某个值
public static boolean contains(int[] var,int obj){
for (int i = 0;i < var.length;i++){
if (var[i] == obj){
//重复了
return true;
}
}
return false;
}
}
三、类的使用
Java OOP:object oriented programming面向对象编程
1. 类和对象的概念
类:java里面除了8大基本数据类型之外 都是对象,是抽象的,不实际存在的,用来描述同一类事物(具有共同的属性 或者方法)
一般来说,类是由数据成员和函数成员封装而成
对象:具体的 实际存在的 某一个类的实例化,且对象都是new出来的,可以完成具体的事情;同一个类可以有多个对象
2. 类的定义
定义一个类 通常情况下一个文件对应一个类
修饰符:public static final
修饰符 class 类名{
这个类的一些属性:成员变量
这个类的功能:方法
}
class Person{
//成员变量 通常定义在类的最上方
//default:
public String name;
public int age;
public float score;
private String password;
public char choice;
//方法的定义 public static final private
public void test(){
System.out.println("没有返回值 没有参数的返回值");
}
}
3.对象的创建
对象一旦创建 属性变量有初始值
char ' ' int long short byte 0
float double 0.0
boolean false
引用数据类型:对象类型的变量 = null
/*
创建Person类的一个对象
使用.访问成员变量
*/
Person xw = new Person();
Person zs = new Person();
/*
同一个类可以创建多个对象
每个对象的内存空间都是独立的(对象之间没有任何关系)
xw和zs除了都是同一个类创建的之外 没有任何关系
对xw属性的操作 不会影响zs
*/
//给这个对象对应的属性赋值
//方法区->堆->栈
xw.name = "小王";
xw.age = 20;
xw.score = 86.5f;
System.out.println(xw.name);
System.out.println(xw.age);
System.out.println(xw.score);
4. 创建的对象的内存表现
image.png
5. 成员方法的声明和访问以及使用
方法的使用:
调用谁(那个对象)的方法
在类里面可以直接调用自己的方法
在外部必须通过对象来调用
//方法的定义 public static final private
public void test(){
System.out.println("没有返回值 没有参数的返回值");
}
public void test2(){
//在自己的类里面可以调用这个类里面的所有资源
//this.test();
test();
}
//没有返回值 接受一个参数
public void test3(String name){
}
//有返回值 接受一个参数
public int test4(String name){
return 0;
}
//有多个参数 每个参数用逗号隔开
public int test5(String name){
return 0;
}
//可变参数 相当于 数组
public int test6(int ... counts){
int sum = 0;
for (int i = 0;i < counts.length;i++){
sum += counts[i];
}
return sum;
}
//调用test6
Person lisi = new Person();
lisi.test();
//匿名对象 ->作为一个参数传递
int result = lisi.test6(new int[]{1, 2, 3, 4, 5});
System.out.println(result);
6. Java语言三大特点
封装:
把私有的东西封装起来 不让外部使用
需要给外部使用 就暴露出来
访问权限:public private protected
public:公共的 内部可以用,外部也可以用
private:私有的 只能自己使用 外部无法访问 子类无法继承
protected:受保护的 外部(同一个包里面)可以访问
继承:
是指一个对象直接使用另一个对象的属性和方法
多态:
一个对外接口,多个内在实现方法
四、心得体会
通过这次的学习,对Java类与对象的概念有了更深层次的理解,也从内存管理的方式上了解其储存方式,总而言之,收获满满,但仍需努力!