今天我们来细谈一下Java的数组的定义和遍历以及类和对象的概念
目的:对Java的类和数组以及它们所牵涉到的其他方面的知识进行一个深入的了解。
技术 :类
数组
技术的实际操作:
1.数组的定义和遍历
a.这是数组的静态定义:
int[] score={1,2,3};//这是整型数组的定义
String[] names = {"jack", "merry"};//这是一个静态的字符串数组定义
//数组一旦被定义 ,大小确定了,无法更改,也不是绝对的
//静态的内存是由系统所分配的,由系统自己释放
b.数组的动态定义:
//动态就是一定要告诉大小,自己来分配内存,内容动态分配
float[] height = new float[5];
height[0] = 165.5f;
height[1] = 170f;
数组在内存中的运用:就拿静态数组来说:你有三个数据,系统会在内存空间分配三个连续的拥有能够存下整形数据的空间来给你定义的数据,分配了之后,他在里面存一个具体的值,123存完这个值之后,那这里肯定是有一个地址0x100。分配好之后,这个地方是定了一个局部变量,在静态区里面。然后程序要先来调用幂函数。然后它会把main函数入栈。栈Stack的特点是先进后出,在main函数里面定义了一个局部变量,其实这个局部变量是引用类型。存的是地址0x100。然后你这里会指向一个你前面定义的数组静态区。
数组的输出方式:
//尽量不要区扩大变量的作用域
int[] count = new int[10];
for (int i = 0; i < 1; i++) {
count[i] = r.nextInt(100);
}//数组输出方式1
for (int i = 0; i < 10; i++) {
System.out.print(count[i] + "");
}//数组输出方式2
for (int temp:count){
System.out.print(temp+"");
}
//数组输出方式3
System.out.println(Arrays.toString(count));
}
当你要关心到第几个第几个的时候,就选择第一个输出方式。如果你不关心第几个,只想简单的打印一下,就用第二种方式。
这是一个简单的猜数字游戏:
class GussNumber{
public static void main(String[] args) {
int[] org = new int[4];
//产生4个随机数
int[] guess = new int[4];
Random random = new Random();
for (int i = 0; i < 4; i++) {
//产生一个随机数
int temp = random.nextInt(10);
//判断是否存在
//contains把返回0或1 ,然后boolean把0或1赋给result
boolean result = contains(org, temp);
if (result) {
//确保i对应 的位置能够得到一个不重复的数字
i--;
} else {
org[i] = temp;
}
}
Arrays.sort(org);
System.out.print(Arrays.toString(org));
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();
}//判断的用户的输入
//判断 是否存在 2.判断位置是否相同
for (int i = 0; i < 4; i++) {
boolean result = contains(guess, org[i]);
if (result == true) {
//数字存在 判断位置是否相同
int index = Arrays.asList(guess).indexOf(org[i]);
if (index == i) {
//位置和数字 相同
countA++;
} else {
countB++;
}
}
}
if (countA == 4) {
System.out.println("恭喜答对");
break;
} else { System.out.println(countA+"A"+countB+"B");
}
}
}
//自己写一个方法实现 判断某个数组里面是否包含某个值
public static boolean contains(int[] val,int obj)
{
for (int i=0; i<val.length;i++){
if(val[i]==obj) {
//重复了
return true;
}
} return false;
}
2.类和对象的概念:
定义一个类 通常情况下一个文件对应一个类
java里面除了8大基本数据类型之外 都是对象
byte char boolean short int long double float
抽象的 不实际存在 描述同一类实物(具有共同的属性和方法)
如:
人类:概念 抽象 不能完成具体的事情
小王:对象 具体存在 可以使用的
对象:具体的 实际存在的 某一类的实例化
对象都是new出来的
可以完成具体的事情,因为对象具有内存空间
- 修饰符:public static final
- 修饰符 class 类名{
这个类的一些属性:成员变量
这个类的功能:方法
- }
定义这个类就要考虑到他能干啥 - 1.存什么值:成员变量
- 2.完成什么功能:方法
类就是封装
封装: 访问权限:public private protected
public:公有的 想用就用(内部和外部都可以使用)
private:私有的 只能自己使用 外部无法访问
pritectedd:受保护的 外部(同一个包里面)可以访问
把私有的东西封装起来 不让外部使用
需要给外不用 就暴露出来
class Testclass{
public static void main(String[] args){
//创建一个Person类的一个对象
//用new创建一个对象
//使用.访问成员变量
//对象一旦创建 属性变量有初值
/*char '' int long short 0
float double 0.0 byte 0
boolean false
*/
Person xw=new Person();
Person zs=new Person();
/* 同一个类可以创建多个对象
每个对象的内存空间都是独立的(对象之间没有任何关系)
xw和zs除了都是通过一个类创建的之外 没有任何关系
对xw的属性进行操作不会影响zs*/
//给这个对象对应的属性赋值
//基本数据类型直接赋值,字符串是引用类型
xw.name="小王";
xw.age=20;
xw.score=102.5f;
System.out.println(xw.name);
System.out.println(xw.age);
System.out.println(xw);}
}
这就是Java中的数组和类和对象的一些定义和基本概念。