1.目的:学会定义类和使用数组。
Java中的基本数据类型:
char bollean short int long flaot double
引用类型:除了上述的所有类型都是引用类型
数组的两种定义:
image.png
数组定义之后再内存中的表现形式:
image.png
遍历数组的三种方式:
//String[] names = {"jack","merry"};
//计算器:长什么样子 能做什么 概念 类
//有一个计算器在手上 具体存在的东西 对象
Random r = new Random();
//尽量不要扩大变量的作用域
//int[] Arrays
int[] count = new int[10];
for (int i = 0; i < 10; i++){
count[i] = r.nextInt(100);
}
//数组输出方式1
for (int i = 0; i < 10; i++){
System.out.print(count[i]+" ");
}
System.out.println();
//数组输出方式2
for (int temp: count){
System.out.print(temp + " ");
}
System.out.println();
//数组输出方式3
System.out.println(Arrays.toString(count));
}
}
用数组实现猜数字游戏:
//自定义控件、消息
class GuessNumber{
public static void main(String[] args){
//保存原始数字
int[] org = new int[4];
//保存用户猜测的数字
int[] guess = new int[4];
//产生4个随机数
Random random = new Random();
for (int i = 0; i < 4; i++){
//产生一个随机数
int temp = random.nextInt(10);
//判断是否存在
boolean result = contains(org, temp);
if (result){
//确保i对应的位置能够得到一个不重复的数字
i--;
}else{
org[i] = temp;
}
}
//排序
Arrays.sort(org);
System.out.println(Arrays.toString(org));
//定义一个扫描仪对象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++){
guess[i] = scanner.nextInt();
}
//判断用户输入
//1.判断是否存在
for (int i = 0; i < 4; i++) {
boolean result =contains(guess, org[i]);
if(result == true){
//数字存在
//判断位置是否相同
int index = indexOf(guess, org[i]);
System.out.println("i:"+i+" index:"+index);
if (index == i){
//数字和位置都相同
countA++;
} else{
countB++;
}
}
}
if (countA == 4){
System.out.println("恭喜全对!");
break;
}else{
System.out.println(countA+"A"+countB+"B");
}
}
}
/**
* 在一个数组里面查找某个对象的索引值
* @param val 数组
* @param obj 查找的对象
* @return 索引值
*/
public static int indexOf(int[] val, int obj){
for (int i = 0; i < val.length; i++){
if (val[i] == obj){
return i;
}
}
return -1;
}
//自己写一个方法实现 判断某个数组里面是否包含某个值
public static boolean contains(int[] val, int obj){
for (int i = 0; i < val.length; i++){
if (val[i] == obj){
//重复了
return true;
}
}
return false;
}
}
类与对象
一个类是对一 类对象的描述。
类的声明语法格式:
[public] [abstract | fial] class 类名称[extends父类名称]
[implements接口名称列表]
变量成员声明及初始化方法声明及方法体
说明:
class表明其后声明的是一个类
extends如果所声明的类是从某一父类派生而来那么父类的名字应写在extends之后
implements如果所声明的类要实现某些接口1那么接口的名字应写在implements之后
修饰符可以有多个用来限定类的使用方式
public表明此类为公有类
abstract指明此类为抽象类
final指明此类为终结类对象的创建:
其作用是在内存中为此对象分配内存空间返回对象的引用reference相当于对象的存储地址。数据成员:
数据成员表示Java类的状态。声明数据成员必须给出变量名及其所属的类型同时还可以指定其他特性。在一个类中成员变量名是唯一 的。数据成员的类型可以是Java中任意的数据类型简单类型类接口数组。分为实例变量和类变量。
数据成员的声明格式:
[public I protected I privatel][static][ final]transient] [volatile]变量数据类型变量名1[=变量初值),变量名2[=变量初值, ?;格式说明:
public、protected、 private 为访问控制符;
static指明这是一个静态成员变量 ;
final指明变量的值不能被修改;
定义一个类:
image.png创建一个对象
image.png创建对象的内存访问:
image.png
成员方法:
/*
方法的使用
调用谁(哪个对象)的方法
在类里面可以直接调用自己的方法
在外部必须通过对象来调用
*/
// Random random = new Random();
// random.nextInt();
//
// Scanner scanner = new Scanner(System.in);
// scanner.nextInt();
Person lisi = new Person();
lisi.test();
//匿名对象 -> 作为一个参数传递
int result = lisi.test6(new int[]{1, 2, 3, 4, 5});
System.out.println(result);
}
}
/**
* 定义一个类 通常情况下一个文件对应一个类
* 修饰符:public static final
*
* 修饰符 class 类名{
* 这个类的一些属性:成员变量
* 这个类的功能:方法
* }
*/
/**
* 1.存什么值 :成员变量
* 2.完成什么功能:方法
*/
class Person{
//成员变量 定义在类的最上面
String name;
int age;
float score;
String password;
char choice;
//方法的定义 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, int age){
return 0;
}
//可变参数 相当于 数组
public int test6(int ... counts){
int sum = 0;
for (int i = 0; i < counts.length; i++){
sum += counts[i];
}
return sum;
}
}
private public protected final static ...的区别:
image.png感悟:
今天学习了类的定义、数组的使用,特别是关于对象的内存访问以及数组在定义之后在内存中的表现形式让我学到很多 以前对关于内存的知识了解的非常浅,(虽然现在还是非常浅)但是还是学到了不少,就是上课有时候老打瞌睡,还是要好好休息。
宁做老王,不做小王。
网友评论