目的
学习Java中数组的两种状态,理解静态数组和动态数组的相似和不同;了解数组定义之后在内存中的表现形式,实现更深层次的理解;掌握数组的三种输出方式,并明白其原理与意义;使用Java中的数组编写猜数字游戏,加深对Java的理解
Java中的数据类型
基础数据类型
char boolean short int long float double byte
整型(byte、short、int、long)
虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样
byte 的取值范围:-128~127(-2的7次方到2的7次方-1)
short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)
int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)
long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
由上可以看出 byte、short 的取值范围比较小,而long的取值范围时最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以 int 也是我们使用的最多的一个整型类型
浮点型(float、double)
float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同
float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)
double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324(同上)
double 类型比float 类型存储范围更大,精度更高
通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 "F"
浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这时正常的
字符型(char)
char 有以下的初始化方式:
char ch = 'a'; // 可以是汉字,因为是Unicode编码
char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等
char ch = '\0'; // 可以用字符编码来初始化,如:'\0' 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思
Java是用unicode 来表示字符,“中” 这个中文字符的unicode 就是两个字节
String.getBytes(encoding) 方法获取的是指定编码的byte数组表示
通常gbk / gb2312 是两个字节,utf-8 是3个字节
如果不指定encoding 则获取系统默认encoding
布尔型(boolean)
boolean 没有什么好说的,它的取值就两个:true 、false
引用数据类型
除了上面的所有基础数据类型,其余的都是引用类型
数据的两种定义方式
静态数组
int[] score = {1,2,3};
String[] names = {"jack","merry"};
动态数组
float[] height = new float[5];
height[0] = 165.5f;
height[1] = 170f;
输出数组的三种方式
第一种数组输出方式
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));
Java的对象
按照通俗的说法,每个对象就是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词
关键词 具体的&实际存在的&某一类的实例化
对象都是new出来的,可以完成具体的事情并有内存空间
Person xw = new Person();
同一个类可以有多个对象,但每个对象的内存空间都是独立的(对象之间没有任何关系);而xw和zs除了都是通过一个类创建的之外,没有任何关系,对xw的属性进行操作,对zs没有影响
Person xw = new Person();
Person zs = new Person();
xw.name="小王";
xw.age = 20;
xw.score=85.5f;
System.out.println(xw.name);
System.out.println(xw.age);
System.out.println(xw.score);
Java类中的方法的定义方法
public void test(){
System.out.println("没返回值 没有参数的方法");
}
public void test2() {
//在自己的类里面可以调用这个类里面的所有资源
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;
}
需要注意的是:方法在调用时要注意调用谁(哪个对象)的方法,同时在类里面可以直接调用自己的方法,但是在外部必须通过对象来调用
封装中访问权限的区别
封装的定义:把私有的东西包装起来,不让外部使用;需要给外部用,就暴露出来
public:
公共的 大家都可以使用 内部可以使用 外部也可以使用(要有对象)
private:
私有的 只能自己使用 外部无法访问
protected:
受保护的 外部可以访问 但必须在同一个包里面
猜数字游戏
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);
//判断是否存在
//C底层开发语言
boolean result = contains(org, temp);
if (result){
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){
//数字存在
//判断位置是否正确
int index = indexof(guess, 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 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;
}
Java的类
类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。举一个例子说明下类,比如Person(人)就是一个类,那么具体的某个人“张三”就是“人类”这个类的对象,而“姓名、身高、体重”等信息就是对象的属性,人的动作比如“吃饭、穿衣”等就是对象的方法。总之类就是有相同特征的事物的集合,而对象就是类的一个具体实例。同时类有多态和继承,例如“人类”可以分为“男人、女人”,“老人、小孩”那么“男人、女人”就是“人类”的子类等等。
关键词 抽象的概念&不实际存在的&不能完成具体的事情&具有共同的属性和方法
定义一个类,需要用到修饰符和class,以及一个具体的类名;通常情况下一个文件对应一个类
修饰符:public static final
修饰符 class 类名{
这个类的一些属性:成员变量
这个类的功能:方法
}
1.存什么值:成员变量
2.完成什么功能:方法
class Person{
//成员变量定义在最上面
String name;
int age;
float score;
String password;
char choice;
}
心得体会
今天是熟悉Java中类和对象的一天,算是对Java这个语言有了最基本的了解;希望继续努力