第6天 Java基础语法
今日内容介绍
-
自定义类
-
ArrayList集合
-
引用数据类型(类)
-
引用数据类型分类
-
提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。
我们可以把类的类型为两种:
-
第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
-
第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
这里我们主要介绍第二种情况的简单使用。
-
自定义数据类型概述
我们在Java中,将现实生活中的事物抽象成了代码。这时,我们可以使用自定义的数据类型(类)来描述(映射)现实生活中的事物。
类,它是引用数据类型,与之前学习的所有引用数据类型相同,自定义类也是一种数据类型。只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。
-
类的定义与使用
java代码映射成现实事物的过程就是定义类的过程。
我们就拿一部手机进行分析,它能用来做什么呢?它可以打电话,上网,聊微信等,这些就是手机所提供的功能,也就是方法;手机也有它的特征,如颜色、尺寸大小、品牌型号等,这些就是手机的特征,也就是属性。
目前,我们只关注类中的属性,类中的方法在面向对象部分再进行学习。
-
类的定义格式
-
类的定义格式
创建java文件,与类名相同
public class 类名{
数据类型属性名称1;
数据类型属性名称2;
…
}
通过类的定义格式,来进行手机类的描述,如下所示
public class Phone {
/*
* 属性
*/
String brand;// 品牌型号
java基础语法6
String color;// 颜色
double size; // 尺寸大小
}
上述代码,就是创建一个类的的过程,类的名称我们给起名为Phone,类中包含了三个属性(brand品牌型号、color颜色、size尺寸大小)。注意,类中定义的属性没有个数要求。
-
类的使用格式
Phone类定义好后,我们就可以使用这个类了,使用方式和使用引用数据类型Scanner类相似。格式如下:
导包:我们将所有的类放到同一个文件夹下,可以避免导包。
创建对象:数据类型变量名 = new 数据类型();
调用方法:目前我们定义的自定义类不涉及方法,只是属性(自定义类中的方法部分在面向对象部分讲解)
访问属性:变量名.属性 (这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)
当有了Phone数据类型的变量后,我们就可以使用Phone类中的属性了。对属性的访问我们来演示一下,如下所示:
publicclass Test {
publicstaticvoid main(String[] args) {
//定义了一个Phone类型的变量p
Phone p = new Phone();
/*
* 通过p,使用Phone中的属性
*/
//访问p中的brand品牌属性
p.brand = "苹果6s";
//访问p中的color颜色属性
p.color = "白色";
//访问p中的size尺寸大小属性
p.size = 5.5;
System.out.println("手机品牌为" + p.brand);
System.out.println("手机颜色为" + p.color);
System.out.println("手机尺寸大小为" + p.size);
}
}
运行结果如下所示
-
运行结果
-
自定义类型注意事项与内存图
上述代码中,通过类Phone创建出来的变量p,它相当于我们生活中的盒子,里面包含了它能够使用的属性。
-
通过 p.属性名 就可以对属性进行操作
-
与引用类型数组类似,引用类型的自定义类型的变量,直接变量时,结果为对象地址值,这里可以通过内存图简单解释。
-
自定义类型练习
学习了引用数据类型(类)以后,我们就能够使用类描述任何东西了。看几个具体的描述,如下:
-
电饭锅,包含属性(品牌、容量大小、颜色等)
-
汽车,包含属性(品牌、排量、类型等)
-
学生,包含属性(姓名,年龄,性别等)
-
ArrayList集合
在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。例如,要保存一个学校的学生,由于不停有新生来报道,同时也有学生毕业离开学校,这时学生的数目很难确定。为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。在这里,我们先介绍ArrayList集合,其他集合在后续课程中学习。
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
-
集合的创建
创建集合的常用格式在此说明一下:
导包:import java.util.ArrayList;
创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:
ArrayList<要存储元素的数据类型> 变量名 = new ArrayList<要存储元素的数据类型>();
-
集合中存储的元素,只能为<>括号中指定的数据类型元素;
-
"<要存储元素的数据类型>"中的数据类型必须是引用数据类型,不能是基本数据类型;
下面给出8种基本数据类型所对应的引用数据类型表示形式:
基本数据类型
对应的引用数据类型表示形式
byte
Byte
short
Short
Int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean
我们通过举几个例子,来明确集合的创建方式:
-
存储String类型的元素
-
存储int类型的数据
-
存储Phone类型的数据
-
集合中常用方法
接下来,我们来学习下ArrayList集合提供的一些常用方法,如下表:
方法声明
功能描述
boolean add(Object obj)
将指定元素obj追加到集合的末尾
Object get(int index)
返回集合中指定位置上的元素
int size()
返回集合中的元素个数
通过代码演示上述方法的使用。ArrayListDemo01.java
import
java.util.ArrayList;
public class
ArrayListDemo01 {
public static void
main(String[] args) {
// 创建 ArrayList 集合
ArrayList<String> list =
newArrayList<String>();
// 向集合中添加元素
list.add(
"stu1");
list.add(
"stu2");
list.add(
"stu3");
list.add(
"stu4");
// 获取集合中元素的个数
System.out.println(" 集合的长度: " + list.size());
// 取出并打印指定位置的元素
System.out.println(" 第 1个元素是:" + list.get(0));
System.out.println(" 第 2个元素是:" + list.get(1));
System.out.println(" 第 3个元素是:" + list.get(2));
System.out.println(" 第 4个元素是:" + list.get(3));
}
}
集合的遍历
上述代码中,第5行定义了一个可以存储int元素的集合;第7-10行,实现将int类型数值存储到集合中;第12-16行,实现遍历集合元素。这里要强调一点,get方法返回值的类型为集合中元素的类型。
-
集合中的常用方法补充
ArrayList集合提供的一些常用方法,如下表:
方法声明
功能描述
boolean add(int index, Object obj)
将指定元素obj插入到集合中指定的位置
Object remve(int index)
从集合中删除指定index处的元素,返回该元素
void clear()
清空集合中所有元素
Object set(int index, Object obj)
用指定元素obj替代集合中指定位置上的元素
-
boolean add(int index, Object obj)
-
功能:在集合中指定index位置,添加新元素obj
-
功能说明:假设集合list中有元素["java","javaEE"],当使用add(1,"javaWeb")后,集合list中的元素为["java","javaWeb","JavaEE"]。
-
-
Object set(int index, Object obj)
-
功能:用指定元素obj替代集合中指定index位置的元素
-
功能说明:假设集合list中有元素["java","javaEE"],当使用set(0,"javaWeb")后,集合list中的元素为["javaWeb","JavaEE"]。
-
-
Object remve(int index)
-
功能:从集合中删除指定index处的元素,返回该元素
-
功能说明:假设集合list中有元素["java","javaEE"],当使用remove(0)后,集合list中的元素为["JavaEE"],返回值为"java"。
-
-
void clear()
-
功能:清空集合中所有元素
-
功能说明:假设集合list中有元素["java","javaEE"],当使用clear()后,集合list中的元素为空[]。
-
-
随机点名器案例
-
案例介绍
-
随机点名器,即在全班同学中随机的找出一名同学,打印这名同学的个人信息。
此案例在我们昨天课程学习中,已经介绍,现在我们要做的是对原有的案例进行升级,使用新的技术来实现。
我们来完成随机点名器,它具备以下3个内容:
案例需求分析
实现代码步骤
*
学生信息类
public
class Student {
String name; //姓名
int age; //年龄
public
static
void
main(String[] args) {
ArrayList<Student> list =
newArrayList<Student>();
//1.1创建一个可以存储多个同学名字的容器
/*
* 1.
存储全班同学信息
/*
* 2.
打印全班同学每一个人的信息(姓名、年龄)
/*
* 3.
随机对学生点名,打印学生信息
/
* 1.
存储全班同学名字
public
static
void
addStudent(ArrayList<Student> list) {
//
键盘输入多个同学名字存储到容器中
new
Scanner(System.
in
);
for
(
int
i = 0; i < 3; i++) {
//
创建学生
new
Student();
System.
out.println(
"存储第
"
+i+
"个学生
姓名:");
name
= sc.next();
System.
out.println(
"存储第
"
+i+
"个学生年龄:
"
);
age
= sc.nextInt();
//
添加学生到集合
/
* 2.
打印全班同学每一个人的信息(姓名、年龄)
public
static
void
printStudent (ArrayList<Student> list) {
for
(
int
i = 0; i < list.size(); i++) {
System.
out.println(
"姓名:
"
+s.
name+
",年龄:
"
+s.
age);
/
* 3.
随机对学生点名,打印学生信息
public
static
void
randomStudent (ArrayList<Student> list) {
//
在班级总人数范围内,随机产生一个随机数
int
index =
new
Random().nextInt(list.size());
//
在容器(
ArrayList
集合)中,查找该随机数所对应的同学信息(姓名、年龄)
System.
out.println(
"被随机点名的同学:

"
+s.
name+
",年龄
:"
+ s.
age);
库存管理案例
-
案例介绍
案例需求分析
实现代码步骤
*
库存商品类
public
class Goods {
String brand; // 商品品牌型号
double size; // 商品尺寸大小
double price; // 商品价格
int count; // 商品库存个数
/
*
库存管理功能菜单
*
@return管理员键盘输入的功能操作序号
public
static
int
chooseFunction() {
System.out.println("-------------库存管理
------------"
);System.
out.println(
"1.查看库存清单
"
);
System.
out.println(
"2.修改商品库存数量
"
);
System.
out.println(
"3.退出
"
);
System.
out.println(
"请输入要执行的操作序号:
"
);
//
接收键盘输入的功能选项序号
new
Scanner(System.
in
);
int
choose = sc.nextInt();
return
choose;
public
static
void
main(String[] args) {
//
记录库存商品信息
new
ArrayList<Goods>();
//
添加商品到库存
addStore
(list);
//
通过
while
循环模拟管理员进行功能重复选择操作
while
(
true
) {
//
打印功能菜单操作
,
接收键盘输入的功能选项序号
int
choose =
chooseFunction
();
//
执行序号对应的功能
switch
(choose) {
case 1://查看库存清单
printStore
(list);
break
;
case 2://修改商品库存数量
update
(list);
break
;
case
3:
//退出
exit
();
return
;
default
:
out.println(
"----------------------------------"
);System.
out.println(
"功能选择有误,请输入正确的功能序号
!"
);
break
;
/
*
查看库存清单
public
static
void
printStore(ArrayList<Goods> list) {
//
统计总库存个数、统计库存总金额
int
totalCount = 0;
double
totalMoney = 0.0;
//
列表顶部
System.out.println("---------------------------查看库存清单
--------------------------"
);System.out.println("品牌型号
尺寸
价格
库存数
"
);
//
列表中部
for
(
int
i = 0; i < list.size(); i++) {
out
.println(item.
brand
+
" "
+item.
size
+
" "
+item.
price
+
" "
+ item.
count
);
//
统计总库存个数、统计库存总金额
count
;
count
* item.
price
;
//
列表底部
out.println(
"-------------------------------------------------------------"
);System.
out.println(
"总库存数:
"
+totalCount);
System.
out.println(
"库存商品总金额:
"
+totalMoney);
/
*
修改商品库存数量
public
static
void
update(ArrayList<Goods> list){
System.out.println("------------修改商品库存数量
-----------"
);for
(
int
i = 0; i < list.size(); i++) {
System.
out.println(
"请输入
"
+ item.
brand+
"商品库存数量
"
);
count
=
new
Scanner(System.
in
).nextInt();
/
*
退出
publicstaticvoid
exit(){
System.out.println("----------------退出
---------------"
);System.
out.println(
"您已退出系统
"
);
总结
-
知识点总结
-
类的类型为两种:
-
第一种,Java为我们提供好的类,如Scanner类,Scanner类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
-
第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
-
-
创建类的格式
public class
类名
{
//
可以定义属性
//
也可以定义方法
类名
变量名
= new
类名
();
使用属性:
变量名
.
属性
使用方法:
变量名
.
方法
()
-
它属于引用数据类型(类)。我们可以看作一个长度可变的数组。
-
创建集合的方式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2114.html