心得体会
- 今天对Java有了更深一步的了解,从类、属性、对象,再到方法,用JAVA编写猜数字的demo,给了我与c语言不一样的体会,也感受到了很大的困难,但再难也要克服,我会尽我最大努力去对待我的学习的。
今日所学
1.数组的使用
- 1.数组的两种定义方式
- 2.遍历数组的三种方式
- 3..数组定义之后在内存中的表现形式
- 4.Java实现猜数字游戏
2.类和对象
- 1.类和对象的定义
- 2.创建对象的内存表现
- 3.成员方法的声明和访问
- 4.方法的使用
- 5.封装
具体操作
1.数组的使用
- 1.数组的两种定义方式
//静态
int[] score = {1, 2, 3};
String[] names = {"jack", "merry"};
//动态内容添加
float[] height = new float[5];
height[0] = 165.5f;
height[1] = 170f;
- 如果在定义前就已经确定了数组的内容,那就用静态的定义
- 如果在定义的时候还不确定数组的具体内容,但是知道数组的大小,就用动态的方式创建
-
2..数组定义之后在内存中的表现形式
image.png
QQ截图20190806203025.png
- 通常局部变量在栈里面被申请
- 3.遍历数组的三种方式
Random r = new Random();
//尽量不要扩大变量的作用域
int count[]=new int [10];
for(int i=0;i<10;i++){
count[i]=r.nextInt(100);
}
for(int i=0;i<10;i++){
System.out.print(count[i]+" ");//第一种
}
System.out.println();
for(int temp:count){
System.out.print(temp+" ");//第二种
}
System .out.println();
System.out.println(Arrays.toString(count));//第三种
}
}
QQ截图20190806180450.png
由上图可知,数组的第三种遍历方式会把结果用中括号括起来,如果只需考虑结果,不用考虑i的大小,可以采用第三种方法
- 4.Java实现猜数字游戏
class GuessNumber{
public static void main(String[] arg){
//保存原始数据
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();
}
for(int i=0;i<4;i++){
boolean result = contains(guess,org[i]);
if(result){
//数字存在
//判断位置是否相同
int index= indexof(guess,org[i]);
if(index==i){
countA++;
}else{
countB++;
}
}
}
if(countA==4){
System.out.print("恭喜答对");
break;
}else{
System.out.println(countA+"A"+countB+"B");
}
}
}
//在一个数组里面查找某个对象的索引值
public static int indexof(int[] val, int obj){
for(int i=0;i<val.length;i++){
if(val[i]==obj){
return i;
}
}
return -1;
}
20190806_181459.gif
2.类和对象
1.类和对象的定义
a..类(Contact:)
- 类是抽象的 ,不实际存在的 描述同一类实物(具有共同的属性和方法)
- 类就是封装
- 通常情况下一个文件对应一个类
- 例如:人类是一个概念 ,它是抽象的 ,不能完成具体的事情
b.对象- 对象:具体的,实际存在的,某一类的实例化(对象都是new出来的)
- 例如: 小王:是一个对象,它是 具体存在并可以使用的
c.对象的创建
对象一旦创建 属性变量有初值
属性变量 | 初值 |
---|---|
char | ‘ ’ |
int/long/short | 0 |
boolean | false |
byte | 0 |
引用数据 类型:对象类型的变量 | null |
Person xw=new Person();
Person zs=new Person();
//给对象相应的属性赋值
xw.name="小王";
xw.age=20;
xw.score=86.5f;
System.out.println(xw.name);
System.out.println(xw.age);
System.out.println(xw.score);
Person类里面有 xw和zs两个对象,它们没有任何关系
d.类和对象的关系
- java里面除了8大基本类型之外,都是对象(对象都是new出来的)
- 同一个类可以有多个对象,每个对象 的内存空间都是独立的(对象之间没有任何关系)
- 例:汽车是抽象的,它是一个类,但兰博基尼确是一个对象,它是具体的,汽车的品牌不止一种,还有其它的,这就类似于>同一个类可以有多个对象
Person xw=new Person();
Person zs=new Person();
//这里xw 和 zs 是在同一个Person类下创建的两个不同的对象,它们没有任何关系,对xw属性进行操作,不会影响zx
-
2.创建对象的内存表现
QQ截图20190806203920.png
1.类class Person编译后就加载到方法区里面,计算对象要占多少的内存空间,堆里面分配内存空间,然后赋初值,这样对象创建就结束了
2.xw这个内存在栈上面,对象创建完毕后给xw
3.动态分配的内存在堆上面,局部 变量的内存在栈上面,方法的内存 就在方法区里面
-
3.成员方法的声明和访问
a.方法的定义
public static final private
public void test(){
System.out.print("没返回值 没参数的方法");
}
public void test2(){
test();
//this.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;
}
}
- 4.方法的使用
- 在类里面可以直接调用自己的方法
- 在外部必须通过对象来调用
Random random=new Random();
random.nextInt();
Person lisi=new Person();
lisi.test();
//匿名对象->作为一个参数传递
int i= lisi.test6(new int[]{1, 2, 3, 4, 5});
System.out.print(i);
public void test(){
System.out.print("没返回值 没参数的方法");
}
注意!!!
Person lisi=new Person();
lisi.test();
此处调用了test方法,由于该调用在Person类外部,所以它创建了一个lisi对象,如果不创建对象,就无法调用类外部的方法
-
5.封装
封装: 访问权限:public private protected
- public:公共的 想用就用(内部可以用,外部也可以用)
- private:私有的 只能自己使用 外部无法访问
- protected:受保护的 外部(同一个包里可以使用)把私有的东西封装起来 不让外部使用, 需要给外部用 就暴露起来
网友评论