java_一个对象【两个对象】的内存图分析、局部变量和成员变量、构造方法、scaner类、 Random类(生成随机数)、代码模拟猜数字的小游戏等介绍_学习笔记

面向对象

一个对象的内存图:
在这里插入图片描述
两个对象使用同一个成员方法的内存图:

在这里插入图片描述
两个引用指向同一个对象的
在这里插入图片描述
使用对象类型作为方法的参
在这里插入图片描述
注意:
当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的地址值。

使用对象类型作为方法的返回值

在这里插入图片描述
注意:
当使用一个对象类型作为方法的返回值时:返回值其实就是对象的地址值。

局部变量和成员变量

  1. 定义的位置不一样【重点】: 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中
  2. 作用范围不一样【重点】: 局部变量:只有方法当中才可以使用,出了方法就不能再用成员变量:整个类全都可以通用。
  3. 默认值不一样【重点】 :局部变量:没有默认值,如果要想使用,必须手动进行赋值成员变量:如果没有赋值,会有默认值,规则和数组一样
  4. 内存的位置不一样(了解):局部变量:位于栈内存成员变量:位于堆内存
  5. 生命周期不一样(了解):尾部变量:随着方法进栈而诞生,随着方法出栈而消失成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

构造方法

构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:
pubLic类名称(参数类型参数名称){方法体
}
注意事项:

  1. 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
  2. 构造方法不要写返回值类型,连void都不写
  3. 构造方法不能return—个具体的返回值
  4. 如果没有编写任何构造方法,那么绢译器将会默认赠送一个构造方法,有参数、方法体什么事情都不做。public Student() {}
  5. —旦编写了至少一个构造方法,那么编译器将不再赠送。
  6. 构道万话也是可以进行驱载的。重载:方法名称相同,参数列表不同。
pubiic class Student {
	private String name;
	private int age;
	public Student() {
		System.out.print1n(“无参构造方法执行啦!");
		}
	public Student(String name, int age) {
		System.out.print1n("全参构造方法执行啦!);
		this.name = name;
		this.age = age;
	}
get、set方法省略............
}
public static void main(String[] args){
	Student st1 = new Student();  //会执行无参构造
	student st2 = new Student("小张"18) //执行有参构造
}

API文档----scaner类

**Scanner类的功能:**可以实现键盘输入数据,到程序当中。
引用类型的一般使用步骤:

  1. 导包,import包路径.类名称;
    如果需要使用的自标类,和当前类位于同一个包下,则可以省略导包语句不写。只有java.Lang包下的内容不需要导包,其他的包都需要import语句。
  2. 创建 类名称对象名= new类名称();
  3. 使用 对象名.成员方法名()
  4. 芜取键盘输入的一个int数字: int num = sc.nextInt();
  5. 获取键盘输入的一个字符串:String str = sc.next();
public static void main(String[]args) {
	//2.创建
	//备注:System.in代表从键盘进行输入
	Scanner sc = new Scanner(System.in ) ;
	System.out.println("请输入您想输入的数字:");
	//3.获取键盘输入的int数字
	int num = sc.nextInt();
	System.out.print1n(“输入的int数字是:" + num) ;
	System.out.println("请输入您想输入的字符串:");
	//4.获取键盘输入的字符串
	String str = sc.next();
	System.out.println(“输入的字符串是:" + str);
}

Random类(生成随机数)

Random类用来生成随机数子。使用起来也是三个步骤:

  1. 导包 import java.util.Random;
  2. 创建 Random r = new Random(); /小括号当中留空即可
  3. 使用 获取一个随机的int数字(范围是int所有范围,有正负两种): int num = r.nextInt()
public static void main(String[]args) {
	Random r = new Random( );
	int num = r.nextInt();
	System.out.println("随机数是:+ num);
}

题目要求:

根据int变量n的值,来获取随机数字,范围是[1,n],可以取到1也可以取到n。
思路:

  1. 定义一个int变量n,随意赋值
  2. 要使用Random:三个步骤,导包、创建、使用
  3. 如果写10,那么就是0~ 9,然而想要的是1~10,可以发现:整体+1即可。
  4. 打印随机数字
public static void main(String[] args) {
	int n = 5;
	Random r = new Random();
	for (int i = 0; i < 100; i++){
		//本来范围是[e,n),整体+1之后变成了[1,n+1),也就是[1, n]
		int result = r.nextInt(n) + 1;
		System.out.println(result);
	}
}

题目:

用代码模拟猜数字的小游戏。

思路:***

  1. 首先需要产生一个随机数字,并且一旦产生不再变化。用Random的nextInt方法
  2. 需要键盘输入,所以用到了Scanner
  3. 获取键盘输入的数字,用Scanner当中的nextInt方法
  4. 已经得到了两个数字,判断(if)一下:
  5. 如果太大了,提示太大,并且重试;
  6. 如果太小了,提示太小,并且重试;如果猜中了,游戏结束。
  7. 重试就是再来一次,循环次数不确定,用whiLe(true)
public static void main(String[] args) {
	Random r = new Random( );
	int randomNum = r.nextInt( bound: 100) + 1;// [1,100]
	Scanner sc = new Scanner(System.in);
	while (true) {
		System.out.print1n(“请输入你猜测的数字:.")3.....
		int guessNum = sc.nextInt(); //键盘输入猜测的数字
		if (guessNum > randomNum) {
			System.out.println("太大了,请重试。");
		}else if (guessNum < randomNum) {
			System.out.println("太小了,请重试。");
		}else {
			System.out-print1n("恭喜你,猜中啦!");
			break; //如果猜中,不再重试
		}
	}
	System.out. println(“游戏结束。");
}

模拟猜数字游戏限制次数5次

采用for循环改版

    public static void main(String[] args) {
        Random rm = new Random();
        int res = rm.nextInt(100)+1;
        Scanner sc = new Scanner(System.in);
        int num = 5;
        for (int i = 1; i <= num; i++) {
            System.out.println("请输入你的猜测的数字;");
            int guess = sc.nextInt();
            if(i==num){
                System.out.println("很遗憾!次数用完,你还剩余"+(num-i)+"次机会");
                System.out.println("正确答案是:"+res);
                break;
            }
            if (guess>res){
                System.out.println("您输入的数字太大,请重试,你还剩余"+(num-i)+"次机会");
            }else if(guess<res) {
                System.out.println("您输入的数字太小,请重试,你还剩余"+(num-i)+"次机会");
            }else {
                System.out.println("恭喜你猜中了,这是第"+i+"次");
                break;
            }
        }
        System.out.println("游戏结束啦");
    }

运行结果如下

请输入你的猜测的数字;
12
您输入的数字太小,请重试,你还剩余4次机会
请输入你的猜测的数字;
50
您输入的数字太大,请重试,你还剩余3次机会
请输入你的猜测的数字;
40
您输入的数字太大,请重试,你还剩余2次机会
请输入你的猜测的数字;
30
您输入的数字太大,请重试,你还剩余1次机会
请输入你的猜测的数字;
25
很遗憾!次数用完,你还剩余0次机会
正确答案是:24
游戏结束啦

Process finished with exit code 0

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值