引用(复合)数据类型

1. 枚举类型

例:
枚举类型 Size 的声明:
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };
声明 Size 类型变量:
Size s = Size.MEDIUM;

注意:

  • Size 类型的变量只能存储这个类型声明中给定的某个枚举值,或者 null 值。
  • toString 方法与 Enum.valueOf 静态方法
  • 在比较两个枚举类型的值时,不需要调用 equals,可以直接使用 == 比较。

补充:

public enum Day
{
MONDAY, TUESDAT, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
跟类定义一样,枚举类型可以单独放在一个文件里,当一个枚举类型用 public 修饰时,它对其他包可见,否则只对同一个包中的类可见,这和类定义是一样的。
标识符 MONDAY, TUESDAY等就称为枚举常量(enumeration constants)
每一个枚举常量被隐式的声明成 Day 的一个public、static成员,而且其类型为Day,亦就是说这些常量是 self-typed 的
Ref:java里有枚举类型吗?如何定义?

2. 字符串

  • 字符串是不可变的

    • Java 的设计者认为共享带来的高效率远远胜于提取、拼接字符串所带来的低效率。
  • 使用equals()方法比较字符串内容
    • 如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的,而+.substring(parm)等操作产生的结果并不是共享的。因此,千万不要使用==运算符测试字符串的相等性,以免在程序中出现糟糕的 bug。从表面上看,这种 bug 很像随机产生的间歇性错误。
  • 空串:str.length() == 0str.equals("")
  • null串:str == null

「JavaSE 重新出发」02.02 引用数据类型的更多相关文章

  1. 「JavaSE 重新出发」05.02 泛型数组列表、包装类

    泛型数组列表 ArrayList 是一个采用类型参数(type parameter)的泛型类(generic class). java ArrayList<Employee> staff ...

  2. 「JavaSE 重新出发」02. 数据类型与运算符

    「TOC」 Java 程序基本要求 Java 数据类型 基本数据类型 复合数据类型 运算符 逻辑运算符 位运算符 运算符优先级 Java 程序基本要求 public class : 一个 Java 文 ...

  3. 「JavaSE 重新出发」05.03.02 在运行时使用反射分析对象

    在编写程序时,如果知道想要查看的域名和类型,查看指定的域是一个很容易的事,而利用反射机制可以查看在编译时还不清楚的对象域. java Employee tank = new Employee(&quo ...

  4. 「JavaSE 重新出发」05.01.02 hashCode 方法、toString 方法

    hashCode 方法 散列码(hash code)是由对象导出的一个整形值(可以是负数).其是没有规律的,如果x与y是两个不同的对象,则x.hashCode()与y.hashCode()基本上不会相 ...

  5. 「JavaSE 重新出发」02.01 基本数据类型

    基本数据类型 1. 整型 注意:Java 没有任何无符号(unsigned)形式的 int.long.short 或 byte 类型. 不同进制的表示形式: 十六进制数值有一个前缀0x或0X(如0xC ...

  6. 「JavaSE 重新出发」01. Java介绍

    「白皮书」关键术语 简单性(C++--) 面向对象 分布式 健壮性 安全性 体系结构中立 可移植性 解释型 高性能 多线程 动态性 Java 发展历程 SUN公司--Stanford Universi ...

  7. 「JavaSE 重新出发」05.01.01 equals 方法

    equals 方法示例 // 代码来自<Java核心技术 卷I>P167 // 父类 public class Employee{ ... public boolean equals(Ob ...

  8. 「JavaSE 重新出发」05.03.03 使用反射编写泛型数组代码

    Employee[] a = new Employee[100]; // ... // array is full a = Arrays.copyOf(a, 2 * a.length); 如何编写这样 ...

  9. 「JavaSE 重新出发」05.03.01 利用反射分析类

    在 java.lang.reflect 包中有三个类 Field, Method 和 Constructor 分别用于描述类的域.方法和构造器. Class 类中的 getFields, getMet ...

随机推荐

  1. 【转】sql 一对多情况下 Group by分组 结果多列合并

    部分原始表数据 需求: 按routineId进行group分组 初步想法(错误): select r * from autowork.dbo.PartOnRoutine where routineId ...

  2. 转:Hibernate中Criteria和DetachedCriteria的完整用法

    原文地址:http://blog.sina.com.cn/s/blog_667528fd0100rkrf.html 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 H ...

  3. C++ should define all local variable outside the loop?

    see the following two examples, the conclusion is that we should define variable in the loop if it c ...

  4. Java自定义属性注解

    代码: import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.ElementT ...

  5. laravel :Call to undefined function App\Http\Controllers\success() 解决方法

    今天在调用方法时,报错如下:Call to undefined function App\Http\Controllers\success():方法已定义好了,所以我怀疑是未引入function.ph ...

  6. vue2.0变化(转载)

    原文链接:https://www.cnblogs.com/itbainianmei/p/6062249.html 1.每个组件模板template,不再支持片段代码 之前: <template& ...

  7. DOM元素属性值如果设置为对象

    结论:内部会调用toString方法,将设置的对象转换为字符串添加给相应的属性: 这个问题呢,是通过jQuery的each方法中,回调函数的this指向问题而来: 我们知道,回调函数中的this如果指 ...

  8. Could not find result map java.util.HashMap

    Could not find result map java.util.HashMap 找不到结果图java.util.HashMap MyBatis 找不到返回的 'resultMap'!把resu ...

  9. %02x与%2x之间的区别

    输出最小宽度用十进制整数来表示输出的最少位数.若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时). X 表示以十六进制形式输出02表示不足两 ...

  10. ES学习——分析器和自定义分析器

    简介 es在对文档进行倒排索引的需要用分析器(Analyzer)对文档进行分析.建立索引.从文档中提取词元(Token)的算法称为分词器(Tokenizer),在分词前预处理的算法称为字符过滤器(Ch ...