【java】基础知识易错篇(3)——包、枚举类型和数组

(又一次!!让我怀疑人生了ヾ(⌐ ■_■)) 这学过吗??啥时候学的??
⑧说了,加油,打工人

  1. 包裹类型与包:
    这个使用起来一般不会混淆,但是名字!作为一名专业的、即将资深的 程序猿,名词得会⑧ QAQ
    包裹类型是指对基本数据类型提供对应的包裹类型,比如int对应的包裹类型为Integer(是不是很熟悉!!),这种包裹类型的作用是将一个基本数据类型转换成对象的形式,从而使得他们能像对象一样参与运算和传递。
基本类型包裹类型
booleanBoolean
charChar
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

包呢??(我没有包啊!kaigewanxiao)
在java中,包可以理解为文件夹,一个包内可以有很多个类。为啥要有包呢?因为有用(讲人话)。包可以定义类名空间,也就是说两个包里可以有同名的类;控制类之间的访问,在类没有访问控制修饰符的时候,默认同一包中的类可以互相访问,且这些类仅供同一包中的类访问。
定义:package 包名;//放在java源文件最开头

#以前都没用过包也没事啊……?没有显式定义包的时候,默认把同一目录下的没有声明所属包的类放在一个默认包中

  • 注意:既然包等同于文件夹的作用,那么可不可以创建多级文件夹?当然可以。在使用package创建包的时候,包名可以用这种格式“my.pack.demo”,在存储项目的位置会发现这样的文件夹等级:my-pack-demo,其中有许多java类文件。
    (如果使用的是eclipse这种软件,在新建的时候就已经帮我们完成了这个,可能不能太操心这一块,但是如果用的是cmd命令行,那就要自己创建目录结构,这个就有点复杂)
  1. 枚举类型:
  • 定义:enum 枚举类型名{,,,……}
  • 注意:这个类型名定义之后就相当于int这种使用了,可以定义变量;
  • 注意plus:枚举类型的所有值必须是名字,不能是数值
  • 这个名字是啥呢?就是符合java标识符定义规则的。那也就是说不能把1,2,3作为枚举类型
  • 注意plus pro:使用枚举类型需要用**类型名.**做前缀
    举例:enum Season{spring,sunmmer,autumn,winter}
    Season s1=Season.spring;
  • 枚举类型的两个自带函数:
    -rdinal(),返回该值在枚举类型中的位置,从0开始
    name(),返回该枚举类型值的名字
  1. 数组

一句话概括:Java中数组是一个对象

  • 创建:
    举例:
    • int []a={1,2,3};//直接赋值,这样既规定了数组的基本信息(类型、大小),又赋值了
    • int []a=new int[3];//像创建一个对象一样创建数组,这样没有赋初值
    • int []a=new int[n];//n是一个变量,在运行的时候确定数组大小,一旦创建不能在后面再修改数组大小

到这里,联系对象变量(对象变量是指向一个对象的,并不是真的一个对象),可以理解:数组变量只是指向了一个int型的数组,并不是真的一个数组

  • 赋值:
    既然数组变量只是一个类似于“指针”的东西,那么在赋值时候也就可以采用类似于两个对象变量的方式:直接使用数组名赋值,也就是说如果有两个数组a1和a2,可以直接a2=a1,是没有问题的。这种结果在内部是让a1和a2都指向a1指向的int数组。
  • 使用:
    • length:使用数组名.length可以计算数组的大小,注意length是java中数组的成员变量,而不是一个函数!!!不能加()
    • for-each循环:
      格式为for( 数组类型 一个变量:数组名)
      • 举例:for (int i:array),这个循环是对int类型的数组array进行逐个遍历,这里面的i只是一个变量,用任何标识符都可以;
      • 注意:for-each循环只能读取数组数组的值,不能修改
  • 特例:对象数组
    由于对象数组创建之后,数组内是一堆引用,需要为这些引用“找对应的对象”,所以对象数组创建之后需要做的第一个工作是,对象数组初始化。除此之外,其他操作没有不同。
    注意!!!在for-each循环中(如for(shape i: array),那个随意命名的变量就表示对象数组中的对象变量了,不用再写成array[i],i就表示这个了。
    • 举例:
class test_2{
	int b=1;
}
public class test {
	public static void main(String[] srgs) {
		test_2[] t_arr=new test_2[3];//注意这里创建的时候是在创建这个数组对象,不是数组对象指向的对象
		for(int i=0;i<t_arr.length;i++) {
			t_arr[i]=new test_2();//这里在为每一个数组值赋“指向”
			t_arr[i].b=i;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值