精华内容
下载资源
问答
  • Java引用数据类型

    千次阅读 2019-03-07 22:15:57
    我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型。 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。 数据类型 变量名 = new 数据...

    1.1Scanner类
    我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型。
    引用数据类型的使用
    与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。
    数据类型 变量名 = new 数据类型();
    每种引用数据类型都有其功能,我们可以调用该类型实例的功能。
    变量名.方法名();
    Scanner类
    Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
    Scanner使用步骤:
    导包:import java.util.Scanner;
    创建对象实例:Scanner sc = new Scanner(System.in);
    调用方法:
    int i = sc.nextInt(); 用来接收控制台录入的数字
    String s = sc.next(); 用来接收控制台录入的字符串
    了解完Scanner类,我们编写代码来使用下它:ScannerDemo01.java

    import java.util.Scanner;
    public class ScannerDemo01 {
    	public static void main(String[] args) {
    		//创建Scanner引用类型的变量
    		Scanner sc = new Scanner(System.in);
    		//获取数字
    		System.out.println("请输入一个数字");
    		int n = sc.nextInt();
    		System.out.println("n的值为" + n);
    		//获取字符串
    		System.out.println("请输入一个字符串");
    		String str = sc.next();
    		System.out.println("str的值为" + str);
    	}
    }
    

    运行结果如下图所示。
    在这里插入图片描述
    1.2随机数类Random
    我们来学习下,用来产生随机数的类Random,它也属于引用数据类型。
    这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
    方法简介
    public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
    public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0。

    引用数据类型的使用方式,在学习键盘录入Scanner时,我们已经学习过,在这里,再次回顾一下:
    

    Random使用方式:
    import导包:所属包java.util.Random
    创建实例格式:Random 变量名 = new Random();

    接下来,通过一段代码,一起学习下Random类的使用,RandomDemo.java

    在import java.util.Random;
    
    public class RandomDemo {
    	public static void main(String[] args) {
    		// 创建Random类的实例
    		Random r = new Random(); 
    		// 得到0-100范围内的随机整数,将产生的随机整数赋值给i变量
    		int i = r.nextInt(100); 
    		//得到0.0-1.0范围内的随机小数,将产生的随机小数赋值给d变量
    		double d = r.nextDouble(); 
    		System.out.println(i); 
    		System.out.println(d); 
    	}
    }
    

    运行结果如下图所示:
    在这里插入图片描述

    展开全文
  • Java引用数据类型String详解

    万次阅读 2020-07-02 23:54:44
    Java引用数据类型(String)引用数据类型概述引用数据类型与基本数据类型的差别(举例说明) 引用数据类型概述 说到引用数据类型,那么何为引用数据类型? 引用类型,都可以用null值作为值,也就是说可以在初始化的...

    引用数据类型概述

    说到引用数据类型,那么何为引用数据类型?
    引用类型,都可以用null值作为值,也就是说可以在初始化的时候赋值为null,String是引用类型,也就是说可以使用null作为值。
    在这里插入图片描述

    引用数据类型与基本数据类型的差别(举例说明)

    使用基本数据类型:
    int i1 = 1
    int i2 = 1
    这种是会在内存中存储两个1的值

    但是,使用引用类型就不会!
    String s = “hello”
    String s1 = “hello”
    这种,是不会在内存中存在两个"hello"的,只存在一个"hello"。

    假设"hello"的内存地址为xxxxxx,声明s变量时给s赋值"hello"实际上让s变量引用"hello"的内存地址xxxxxx;

    当我们再次声明变量s1也赋值为"hello"的时候实际上也是直接把已经存在的"hello"的内存地址给了s1引用

    此乃引用类型和基本数据类型的区别。

    记录自己最近学习到的东西,做一个总结,希望大家喜欢,一起加油!

    展开全文
  • Java引用数据类型(类)+案例

    千次阅读 2019-03-08 19:54:09
    只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。 类的定义格式 创建java文件,与类名相同 public class 类名{ 数据类型 属性名称1; 数据类型 属性名称2; ...

    引用数据类型(类)
    自定义类也是一种数据类型。只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。

    类的定义格式

    创建java文件,与类名相同
    public class 类名{
    	数据类型  属性名称1;
    	数据类型  属性名称2;
    	…
    }
    

    通过类的定义格式,来进行手机类的描述,如下所示

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

    上述代码,就是创建一个类的的过程,类的名称我们给起名为Phone,类中包含了三个属性(brand品牌型号、color颜色、size尺寸大小)。注意,类中定义的属性没有个数要求。

    **类的使用格式 **
    Phone类定义好后,我们就可以使用这个类了,使用方式和使用引用数据类型Scanner类相似。

    导包:我们将所有的类放到同一个文件夹下,可以避免导包。
    创建对象:数据类型  变量名 = new 数据类型();
    调用方法:目前我们定义的自定义类不涉及方法,只是属性(自定义类中的方法部分在面向对象部分讲解)
    访问属性:变量名.属性 (这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)
    
    public class Test {
    	public static void 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);
    	}
    }
    

    结果为:在这里插入图片描述

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

    存储String类型的元素

    ArrayList<String> list = new ArrayList<String>();
    

    存储int类型的数据

    ArrayList<Integer> list = new ArrayList<Integer>();
    

    存储Phone类型的数据

    ArrayList<Phone> list = new ArrayList<Phone>();
    

    通过代码演示上述方法的使用。

    import java.util.ArrayList;
    public class ArrayListDemo01 {
    	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));
    	}
    }
    

    集合的遍历

     1import java.util.ArrayList;
     2public class ArrayListDemo02 {
     3	public static void main(String[] args) {
     4		//创建ArrayList集合
     5		ArrayList<Integer> list = new ArrayList<Integer>();
     6		//添加元素到集合
     7		list.add(13);
     8		list.add(15);
     9		list.add(22);
     10			int n = list.get(i);
     11		list.add(29);
     12		//遍历集合
     13		for (int i = 0; i < list.size(); i++) {
     14			//通过索引,获取到集合中每个元素
     15			System.out.println(n);
     16		}
     17	}
     18}
    

    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中的元素为空[]。

    案例:随机点名器

    public class Student {
    	String name; //姓名
    	int age; //年龄
    }
    //main方法中调用三个独立方法
    public static void main(String[] args) {
    		ArrayList<Student> list = new ArrayList<Student>(); //1.1创建一个可以存储多个同学名字的容器
    		/*
    		 * 1.存储全班同学信息
    		 */
    		addStudent(list);
    		/*
    		 * 2.打印全班同学每一个人的信息(姓名、年龄)
    		 */
    		printStudent(list);
    		/*
    		 * 3.随机对学生点名,打印学生信息
    		 */
    		randomStudent(list);
    	}
    	public static void addStudent(ArrayList<Student> list) {
    		//键盘输入多个同学名字存储到容器中
    		Scanner sc = new Scanner(System.in);
    		for (int i = 0; i < 3; i++) {
    			//创建学生
    			Student s = new Student();
    			System.out.println("存储第"+i+"个学生姓名:");
    			s.name = sc.next();
    			System.out.println("存储第"+i+"个学生年龄:");
    			s.age = sc.nextInt();
    			//添加学生到集合
    			list.add(s);
    		}
    	}
    public static void printStudent (ArrayList<Student> list) {
    		for (int i = 0; i < list.size(); i++) {
    			Student s = list.get(i);
    			System.out.println("姓名:"+s.name +",年龄:"+s.age);
    		}
    		public static void randomStudent (ArrayList<Student> list) {
    		//在班级总人数范围内,随机产生一个随机数
    		int index = new Random().nextInt(list.size());
    		//在容器(ArrayList集合)中,查找该随机数所对应的同学信息(姓名、年龄)
    		Student s = list.get(index);
    		System.out.println("被随机点名的同学:"+s.name + ",年龄:" + s.age);
    	}
    	}
    
    

    库存管理案例
    在这里插入图片描述

    1.查看库存清单
    2.修改商品库存数量
    3.退出
    请输入要执行的操作序号:
    每一项功能操作,我们采用方法进行封装,这样,可使程序的可读性增强。
    选择“1.查看库存清单”功能,则控制台打印库存清单
    选择“2.修改商品库存数量”功能,则对每种商品库存数进行更新
    选择“3.退出”功能,则退出库存管理,程序结束

    public class Goods {
    	String brand; // 商品品牌型号
    	double size; // 商品尺寸大小
    	double price; // 商品价格
    	int count; // 商品库存个数
    }
    public static int chooseFunction() {
    		System.out.println("-------------库存管理------------");
    		System.out.println("1.查看库存清单");
    		System.out.println("2.修改商品库存数量");
    		System.out.println("3.退出");
    		System.out.println("请输入要执行的操作序号:");
    		//接收键盘输入的功能选项序号
    		Scanner sc = new Scanner(System.in); 
    		int choose = sc.nextInt();
    		return choose;
    	}
    	public static void main(String[] args) {
    		//记录库存商品信息
    		ArrayList<Goods> list = 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:
    				System.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++) {
    			Goods item = list.get(i);
    			System.out.println(item.brand+"	"+item.size+"	"+item.price+"	"+ item.count);
    			//统计总库存个数、统计库存总金额
    			totalCount += item.count;
    			totalMoney += item.count * item.price;
    		}
    		//列表底部
    		System.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++) {
    			Goods item = list.get(i);
    			System.out.println("请输入"+ item.brand +"商品库存数量");
    			item.count = new Scanner(System.in).nextInt();
    			list.set(i, item);
    		}
    	}
    		public static void exit(){
    		System.out.println("----------------退出---------------");
    		System.out.println("您已退出系统");
    	}	
    	
    
    
    展开全文
  • java引用数据类型-数组

    千次阅读 2016-10-23 14:45:52
    数组用于将相同类型数据存储在连续的存储单元中; 可以通过指定数组的名称和长度来声明数组; 一旦声明数组的大小,就不能再修改; 数组元素通过数组名和索引来访问,索引从0开始; 数组可以是一维,也可以是多维...

    数组的定义

    • 数组用于将相同类型的数据存储在连续的存储单元中;
    • 可以通过指定数组的名称和长度来声明数组;
    • 一旦声明数组的大小,就不能再修改;
    • 数组元素通过数组名和索引来访问,索引从0开始;
    • 数组可以是一维,也可以是多维。


      在java中声明数组有如下方式(以整型数组为例):

        //仅声明数组的引用,但没有分配内存空间
        int[] arr;
        //声明数组的同时,根据指定长度分配内存,但是数组中没有值
        int[] arr= new int[10];
        //声明数组并分配内存,同时将其初始化
        int[] arr2= new int[]{1,2,3,4,5};
        //或者是
        int[] arr2={1,2,3,4,5};

    声明数组示例:

        public class ArrayDemo{
            public static void main(String[] args){
            //声明整型数组的引用
            int[] arr;
            //为数组引用在堆中分配内存
            arr = new int[10];
            //使用循环为数组元素赋值
            for(int i=0;i<arr.length;i++){
                arr[i]=i;
            }
            //将数组元素逐个输出到控制台
            System.out.println(Arrays.toString(arr));
            }
        }

    关于数组长度

    • 在java中,程序员可以不再关注数组的长度,数组自带的length属性将负责保管数组的长度
    • java对数组下标越界情况强加约束
    • 如果视图访问不在有效索引以内的元素,将会引发运行错误。(异常:数组下标越界)
      比如:
        int[] arr = new int[4];
        System.out.println(arr[4]);

    控制台抛出的运行时异常,如下图:
    数组下标越界


    数组的赋值

    • 在java中,语法上允许数组直接赋值给另一个数组,但实际得到的效果是两个数组引用指向同一块内存。
        int[] arr1 = new int[]{2,4,6,8,10};
        int[] arr2 = arr1;  
        System.out.println("arr1的地址是:"+arr1+"  arr2的地址是:"+arr2);

    结果如图:
    控制台输出的结果
    用图来说明的话,如下:
    指向同一内存


    数组的复制

    1.数组变量存储对数组的引用,复制该变量将产生同一数组的第二个引用。

        //指向的是同一个地址
        int[] a = new int[3];
        int[] b = a;

    2.真正复制一个数组需要用到clone方法。

        //指向的是不同的地址
        int[] a = new int[3];
        int[] b = a.clone();

    3.使用System.arraycopy()进行数组的复制
    方法的参数说明:

        System.arraycopy(from,fromstart,to,tostart,count); 
    • from:源数组
    • fromstart:从源数组的那个位置开始复制,数组下标是从0开始的
    • to:目标数组
    • tostart:目标数组开始的位置
    • count:复制的长度

    案例:
    将a数组复制到b数组中

        int[] a={1,2,3,4};
        int[] b=new int[3];
        System.arraycopy(a, 0, b, 0, b.length);

    定义多维数组

    1.比如定义一个在第几行就有几列的多维数组,代码如下:

            //申请一个二维数组,三行,列不确定
            int[][] arr= new int[3][];
            for(int i=0;i<arr.length;i++){
                //定义第一行一列,第二行两列,第三行三列
                arr[i]=new int[i+1];
            }

    2.比如定义一个3行4列的多维数组,代码如下:

            //申请一个二维数组,三行,四列
            int[][] arr= new int[3][4];
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr[i].length;j++){
                    //给第一行第一列赋值11,第一行第二列赋值12,以此类推
                    arr[i][j]=(i+1)*10+j+1;
                }
            }
            //循环输出结果
            for(int[] num1:arr){
                for(int num2:num1){
                    System.out.print(num2+" ");
                }
                System.out.println();
            }
            /*
            结果如下:
            11 12 13 14 
            21 22 23 24 
            31 32 33 34 
            */
    展开全文
  • Java 数据类型(基本数据类型、引用数据类型)

    千次阅读 多人点赞 2013-12-11 23:40:11
    Java 数据类型(基本数据类型、引用数据类型) 简单的介绍
  • 理解Java自定义类作为数据类型——引用数据类型

    千次阅读 多人点赞 2020-01-11 20:01:48
    前言:Java的数据类型按照类型可分为基本数据类型(byte、short、int、long、double、float、char、boolean)和引用数据类型(类(class)、接口(interface)、数组(array)),8种基本数据类型相信只要接触过Java就...
  • Java中的数据类型分为两大类,基本数据类型和引用数据类型 一、数据类型二、基本数据类型和引用数据类型的区别
  • java中的五种引用数据类型(对象类型)

    万次阅读 多人点赞 2019-01-20 14:38:23
    Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注 引用类型:底层结构和基本类型差别较大 JVM的内存空间: (1). Heap 堆空间:分配对象 new Student() (2). Stack 栈空间:临时变量 Student stu (3)...
  • java引用数据类型之数组

    千次阅读 2016-01-25 20:09:51
    引用数据类型传递的是内存的使用权,是一块内存空间,它可以由多个单位同时使用。 而赋值的过程并不是把a数组内的数据传递给b,而是把a数组的内存使用权与b共享 。所以当a和b共享同一个数组内存时,不管改变数组...
  • Java基础_引用数据类型的强制类型转换

    千次阅读 多人点赞 2019-05-23 20:01:07
    Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。那么,是不是只要是父类转换为子类就会...
  • java引用数据类型有哪些?

    万次阅读 多人点赞 2016-07-18 09:45:37
    Java中有俩种数据类型,其中主要有8中基本数据类型和引用数据类型,除了8中基本数据类型以外都是引用数据类型,8中基本数据类型分别是byte,short,int,long,char,boolean,float,double,具体如下:1、boolean:数据值...
  • byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,...
  • Java数据类型引用数据类型

    万次阅读 多人点赞 2018-06-26 23:33:29
    我们接着来说数据类型,上一次我们提到了java中的八种数据类型,没有涉及到引用类型,而java引用类型只有三种,分别是类(class)、接口(interface)、数组。如下图所示 Java把内存分成两种,一种叫做栈内存,一种...
  • Java中基本数据类型和引用数据类型的存放位置

    千次阅读 多人点赞 2017-07-29 11:10:01
    基本数据类型是放在栈中还是放在堆中,这取决于基本类型声明的位置。 一:在方法中声明的变量,即使变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,...
  • 引用数据类型{类【class】;接口【interface】;数组【[ ]】} 两种不同数据类型的区别: 基本数据类型:变量存储在栈中;栈的特点是存储空间小,但是存取速度快 引用数据类型:变量存储在堆中...
  •   1.基本数据类型: boolean,char,byte,short,int,long,float,double  ...2.引用数据类型: 除了基本数据类型以外其他所有的数据类型,比如 Integer 、String、用户自定义的类等等  ...
  • java基本数据类型传递与引用传递区别详解

    万次阅读 多人点赞 2016-04-19 17:12:57
    java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题,首先我们必须认识到这个问题一般是相对函数而言的,也就是java中的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给...
  • java数据类型(八种基本数据类型+三种引用类型)

    万次阅读 多人点赞 2017-02-08 11:05:32
    2引用数据类型 二:注意事项: 1:java开发过程中整型用int、小数用double、布尔用boolean; 2:类型转换都是小范围向大范围转换,大范围往小范围转化需要用到强制转换;  例如:(1)int a=12;double b=a;(2...
  • 背景:Java语言,字符串类型关键字String,是已经封装好的类。 public static void main(String[] agrs) { // 字符串类型创建对象的两种定义方式, // String str1 = "nihao"; // str1指向常量池中的nihao...
  • java引用类型数据,传递的是内存地址,像类,数组,接口,String等等都是引用类型!看下面的代码和截图!public class Test2 { // java引用类型数据传递的是内存地址 private Map&lt;String, Student&...
  • java中的基本数据类型和引用数据类型以及它们的存储方式堆内存和栈内存
  • 1. 对基本数据类型,不同的变量会分配不同...对引用数据类型,赋值是把原对象的引用传递给另外一个引用。对数组而言,当一个数组引用赋值给另外一个数组引用后, 这两个引用指向同一个数组,也就是指向同一块内存空间。
  • Java中主要有8中基本数据类型,分别是byte,short,int,long,char,boolean,float,double,具体如下: 1、boolean:数据值只有true或false,适用于逻辑计算。 2、char:char型(字符型)数据在内存中占用2个字节。...
  • Java数据类型分为基本数据类型与引用数据类型。 1、 基本数据类型 byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0 short:短整型,2个字节(16 bit),取值范围-...
  • java中的方法可以传递参数,参数的传递方法就是值传递。 参数有形参和实参,定义方法时写的参数叫形参,真正调用方法时,传递的参数叫实参。 调用方法时,会把实参传递给形参,方法内部其实是在使用形参。 所谓值...
  • 变量名指向具体的数值引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值二、从内存构建方面来说基本数据类型:变量在声明之后java就会立刻分配给他内存空间引用数据类型:它以特殊的方式(类似C指针)...
  • 一、Java八种基本数据类型        在程序设计中经常用到一系列类型,把它们存储在堆栈中,加快程序的运行效率,它们就是基本数据类型Java提供了8中基本数据类型,分别是:...
  • 2)当使用引用数据类型作为方法的形参时,若在方法体中 修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区; 3)当使用引用数据类型作为方法的形参时,若在方法体中 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 675,709
精华内容 270,283
关键字:

java引用数据类型

java 订阅