Java——定义类,引用类数据类型,集合类型(array list)

一、定义类

1、类的格式

public class 类名{  // 类名最好和文件名一样
  数据类型 属性名称1;
  数据类型 属性名称2;
  …
}

// phone.java

public class Phone {
	// 属性
	String brand;  // 品牌型号
	String color;  // 颜色
	double size;   // 尺寸大小
}

2、类的调用

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }

1)导包:如果所有的类都在同一个文件夹下,就可以不用导包。

2)创建对象:数据类型 变量名= new 数据类型();

3)调用方法:目前我们定义的自定义类不涉及方法,只是属性(自定义类中的方法部分在面向对象部分讲解)

4)访问属性:变量名.属性(这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)

// DiaoyongPhone.java

public class DiaoyongPhone {
    public static void main(String[] args){     // main方法
        phone p = new phone();    // 定义了一个Phone类型的变量p
        p.brand = "iPhoneX";
        p.color = "土豪金";
        p.size = 5.5;

        System.out.println(p.brand);
        System.out.println(p.color);
        System.out.println(p.size);
    }
}

3、类对象在内存中的储存和调用

当初始化一个类的时候,JVM虚拟机会将这个变量名推入栈中,然后在堆内存中开辟一块空间,用来存储类中的属性(一开始设置为null),然后变量名指向那块内存地址。

二、集合

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }

在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。在这里,我们先介绍ArrayList集合,其他集合在后续课程中学习。

ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

1、创建集合

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }

导包:import java.util.ArrayList;

创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:

ArrayList<要存储元素的数据类型> 变量名= new ArrayList<要存储元素的数据类型>();

  • 集合中存储的元素,只能为<>括号中指定的数据类型元素;
  • “<要存储元素的数据类型>”中的数据类型必须是引用数据类型,不能是基本数据类型;

2、集合的方法

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }
a:link { }

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        // 创建ArrayList集合
        ArrayList<String> list = new ArrayList<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));
    }
}

3、集合的遍历

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        // 创建ArrayList集合
        ArrayList<String> list = new ArrayList<String>();
        // 向集合中添加元素
        list.add("stu1");
        list.add("stu2");
        list.add("stu3");
        list.add("stu4");
        // 集合遍历
        for (int i = 0;i < list.size(); i++){
            String n = list.get(i);
            System.out.println(n);
        }
    }
}

4、其他方法

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }

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 remove(int index)

  • 功能:从集合中删除指定index处的元素,返回该元素
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用remove(0)后,集合list中的元素为[“JavaEE”],返回值为“java”。

void clear()

  • 功能:清空集合中所有元素
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用clear()后,集合list中的元素为空[]。

示例1:随机点名器

import java.util.ArrayList;
import java.util.Random;

public class CallName {
    public static void main(String[] args){
        ArrayList<Student> stu = new ArrayList<Student>();
        add(stu);
        randomStudentName(stu);
        printArrayList(stu);

    }

    // 使用random随机出一个索引,取出学生信息
    public static void randomStudentName(ArrayList<Student> array){
        Random r = new Random();
        int num = r.nextInt(array.size());
        Student s = array.get(num);
        System.out.println(s.name + "====" + s.age);
    }

    // 总览学生的信息,遍历集合
    public static void printArrayList(ArrayList<Student> array){
        for (int i = 0;i < array.size();i++){
            Student s = array.get(i);
            System.out.println(s.name + "====" + s.age);
        }
    }

    public static void  add (ArrayList<Student> array){
        //创建StudentName类型变量
        Student sn1 = new Student();
        Student sn2 = new Student();
        Student sn3 = new Student();
        Student sn4 = new Student();
        Student sn5 = new Student();

        sn1.name = "张三1";
        sn1.age = 201;

        sn2.name = "张三2";
        sn2.age = 202;

        sn3.name = "张三3";
        sn3.age = 203;

        sn4.name = "张三4";
        sn4.age = 204;

        sn5.name = "张三5";
        sn5.age = 205;

        //将StudentName变量,存储到集合中
        array.add(sn1);
        array.add(sn2);
        array.add(sn3);
        array.add(sn4);
        array.add(sn5);
    }
}

示例2:库存管理系统

  1 /*
  2     实现库存管理案例:
  3       1. 存储商品信息
  4         存储商品类型变量
  5         将商品类型的变量,存储到集合中
  6
  7       2. 查看库存清单
  8         将集合进行遍历, 获取出集合中存储的Goods类型变量
  9         输出每一个Goods类型的属性
 10         计算求和: 总库存,总金额
 11
 12      3. 修改商品的库存
 13         集合遍历 ,获取出集合中存储的Goods类型变量
 14         变量调用Goods类的属性count,值进行修改 (键盘输入)
 15 */
 16 //import java.util.ArrayList;
 17 import java.util.*;
 18 public class Shopp{
 19     public static void main(String[] args){
 20         //创建ArrayList集合,存储Goods类型
 21         ArrayList<Goods> array = new ArrayList<Goods>();
 22         //调用添加商品信息的方法
 23         addGoods(array);
 24         //进入死循环中
 25         while(true){
 26             //调用选择功能的方法,获取到用户输入的功能序号
 27             int number = chooseFunction();
 28             //对序号判断,如果=1 进入查看库存功能  = 2 进入修改库存功能  =3 结束
 29             switch(number){
 30                 case 1:
 31                 //进入查看库存,调用查看库存的方法,传递存储商品信息的集合
 32                 printStore(array);
 33                 break;
 34
 35                 case 2:
 36                 //进入修改库存功能,调用修改库存的方法,传递集合
 37                 update(array);
 38                 break;
 39
 40                 case 3:
 41                 return ;
 42
 43                 default:
 44                  System.out.println("无此功能");
 45                  break;
 46             }
 47         }
 48     }
 49     /*
 50       方法定义,修改库存
 51       键盘的输入,将Goods中的属性值,修改
 52     */
 53     public static void update(ArrayList<Goods> array){
 54         Scanner sc = new Scanner(System.in);
 55         //遍历集合,获取集合中的每个元素
 56         for(int i = 0 ;  i < array.size(); i++){
 57             //集合方法get获取的是集合的元素,元素类型Goods
 58             Goods g = array.get(i);
 59             System.out.println("请输入"+g.brand+"的库存数");
 60             //Goods属性,count进行修改
 61             g.count = sc.nextInt();
 62         }
 63     }
 64     /*
 65        定义方法,实现选择菜单,用户根据功能选择菜单
 66     */
 67     public static int chooseFunction(){
 68         System.out.println("-------------库存管理------------");
 69         System.out.println("1.查看库存清单");
 70         System.out.println("2.修改商品库存数量");
 71         System.out.println("3.退出");
 72         System.out.println("请输入要执行的操作序号:");
 73         Scanner sc = new Scanner(System.in);
 74         int number = sc.nextInt();
 75         return number;
 76     }
 77
 78     /*
 79        定义方法,查看库存清单,遍历集合
 80     */
 81     public static void printStore(ArrayList<Goods> array){
 82         //输出表头
 83         System.out.println("----------商场库存清单----------");
 84         System.out.println("品牌型号     尺寸    价格    库存数");
 85         //定义变量,保存总库存数,和总金额
 86         int totalCount = 0 ;
 87         double totalMoney = 0;
 88         //遍历集合
 89         for(int i = 0 ; i < array.size(); i++){
 90             //get(索引)获取出集合中的元素,存储的是Goods类,获取的也是Goods类型
 91             //使用Goods类型变量,接受get方法结果
 92             Goods g = array.get(i);
 93             System.out.println(g.brand+"   "+g.size+"    "+g.price+"    "+g.count);
 94             totalCount = totalCount+g.count;
 95             totalMoney = totalMoney + g.count*g.price;
 96         }
 97         System.out.println("总库存数: "+totalCount);
 98         System.out.println("商品库存总金额: "+totalMoney);
 99     }
100
101     /*
102        定义方法,将商品的信息存储到集合中
103        集合是所有方法的共享数据,参数传递
104     */
105     public static void addGoods (ArrayList<Goods> array){
106         //创建商品类型变量 Goods类型的变量
107         Goods g1 = new Goods();
108         Goods g2 = new Goods();
109         g1.brand = "MacBook";
110         g1.size = 13.3;
111         g1.price = 9999.99;
112         g1.count = 3;
113
114         g2.brand = "Thinkpad";
115         g2.size = 15.6;
116         g2.price = 7999.99;
117         g2.count = 1;
118
119         //Goods类型的变量,存储到集合中
120         array.add(g1);
121         array.add(g2);
122     }
123 }

p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justify; widows: 0; orphans: 0 }
p.western { font-family: "Calibri", sans-serif; font-size: 10pt }
p.cjk { font-family: "宋体", "SimSun"; font-size: 10pt }
p.ctl { font-family: "Times New Roman", serif; font-size: 11pt }

原文地址:https://www.cnblogs.com/x54256/p/8407218.html

时间: 2024-10-14 10:53:26

Java——定义类,引用类数据类型,集合类型(array list)的相关文章

java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Cirlce c, int times) 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积.例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积. 在main方法

C++基础2 引用 函数扩展: 默认值 占位符 指针 重载 类:引用类指针 声明实现分开写

[难点]指针引用 [email protected]:~/c++$ cat main.cpp  #include <stdlib.h> #include "iostream" using namespace std; int a = 20; struct Teacher { int age; char name[64]; }; int fun1(struct Teacher ** p) { int ret = 0; if(p == NULL) { ret = -1; ret

C#集合类型——Array、ArrayList、List 之浅谈

在学习或工作中,集合是经常用到的,可以换一句话说“无项目无集合”,“项目皆有集合”.它一般存储一系列数据或者将一系列数据进行相关操作.在这里先大略谈一些集合类型的相关知识用于回顾. 数组(Array) 数组一般只存储一种类型的数据,有一维数组,二维数组等多维数组.都基于System.array类. 格式:type[]  typename:  type指类型,typename指数组名称. 一维数组有多种书写形式: int [] a={1,2,3}; int [] b=new int[]{1,2,3

java Object类是可以接收集合类型的

废话不多说,上代码: package com.core.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ObjectListTest { public static void main(String[] args) { Object obj = createMap(); if(obj instanceof Ma

Python的学习之旅———基本数据类型(集合类型)

# 作用:去重,关系运算,# 定义:# 1:每个元素必须是不可变类型(可hash,可作为字典的key)# 2:没有重复的元素# 3:无序# s={1,2,'a','b','c','d','e','f'} #s=set({1,2,'a'}) # print(type(s),s) # 优先掌握的操作:# 长度len# s={1,2,'a','b','c','d','e','f'}# print(len(s))# 成员运算in和not in# print('a' in s)# for item in

Delphi 类引用 Class Reference 元类 MetaClass 用法

delphi中类引用的使用实例 类引用类引用(Class Reference)是一种数据类型,有时又称为元类(MetaClass),是类的类型的引用.类引用的定义形式如下: class of type 例如: type SomeClass = class of TObject; var AnyObj: SomeClass; TObject = class end; TClass = class of TObject; 下面的例子说明了类引用的用法: program Project1; {$APP

《深入理解java虚拟机》:类的初始化

深入理解java虚拟机>:类的初始化 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中验证.准备.解析3个部分统称为连接.类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 加载.验证.准备.初始化和卸载这5个阶段的顺序时确定的,类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的

Swift的基础,操作符,字符串和集合类型

这篇文章主要讲解苹果Swift官方指南的第二章前四节的要点内容,如果想看完整的英文文档可以去苹果开发者页面下载. Basic 声明常量let 声明变量var 注释依旧使用"//" "/**/", 注意这里"/**/"在Swift可以嵌套使用 表达式结尾不再有分号 整数 你可以声明为Int或者UInt,他们本身适应不同平台(64位, 32位),类似于NSInteger,NSUInteger 也可以直接声明为指定字节数的Int,如: Int8, In

子界类型、集合类型、记录类型、文件类型

子界类型 如果我们定义一个变量i为integer类型,那么i的值在微型机系统的pascal中,使用2字节的定义表示法,取值范围为-32768-32767.而事实上,每个程序中所用的变量的值都有一个确定的范围. 例如,人的年龄一般不超过150,一个班级的学生不超过100人,一年中的月数不超过12,一月中的天数不超过31,等等. 如果我们能在程序中对所用的变量的值域作具体规定的话,就便于检查出那些不合法的数据,这就能更好地保证程序运行的正确性.而且在一定程度上还会节省内存空间. 子界类型就很好解决如

Swift 笔记 (四) —— 集合类型

集合类型 Swift 提供了两种集合类型, Array, Dictionary Array与Dictionary 都须要存同样类型的数据  //实际測试的时候发现能够混杂类型,以下有样例 Array 是有序的, Dictionary 是无序的 Dictionary须要一组无唯一的索引用于查找,也就是key Array 原型: Array<SomeType>, SomeType指的是要放在Array里的数据类型 var myArray: String[] = ["var1",