博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础笔记1
阅读量:5098 次
发布时间:2019-06-13

本文共 2937 字,大约阅读时间需要 9 分钟。

枚举类型

下面是一小段测试代码

public class EnumTest {    public static void main(String[] args) {        Size s=Size.SMALL;        Size t=Size.LARGE;        //s和t引用同一个对象?        System.out.println(s==t);  //        //是原始数据类型吗?        System.out.println(s.getClass().isPrimitive());        //从字符串中转换        Size u=Size.valueOf("SMALL");        System.out.println(s==u);  //true        //列出它的所有值        for(Size value:Size.values()){            System.out.println(value);        }    }} enum Size{SMALL,MEDIUM,LARGE};

由运行结果可以看出,s和t引用的不是同一个对象,枚举类型不是原始数据类型,可以从字符串中转换。

回忆一下下面的程序,这是在没有枚举类型时定义常量常见的方式。

/** * Created by zejian on 2017/5/7. * Blog : http://blog.csdn.net/javazejian [原文地址,请尊重原创] * 使用普通方式定义日期常量 */public class DayDemo {    public static final int MONDAY =1;    public static final int TUESDAY=2;    public static final int WEDNESDAY=3;    public static final int THURSDAY=4;    public static final int FRIDAY=5;    public static final int SATURDAY=6;    public static final int SUNDAY=7;}

上述的常量定义常量的方式称为int枚举模式,这样的定义方式并没有什么错,但它存在许多不足,如在类型安全和使用方便性上并没有多少好处,如果存在定义int值相同的变量,混淆的几率还是很大的,编译器也不会提出任何警告,因此这种方式在枚举出现后并不提倡,现在我们利用枚举类型来重新定义上述的常量,同时也感受一把枚举定义的方式,如下定义周一到周日的常量 。

//枚举类型,使用关键字enumenum Day {    MONDAY, TUESDAY, WEDNESDAY,    THURSDAY, FRIDAY, SATURDAY, SUNDAY}

相当简洁,在定义枚举类型时我们使用的关键字是enum,与class关键字类似,只不过前者是定义枚举类型,后者是定义类类型。枚举类型Day中分别定义了从周一到周日的值,这里要注意,值一般是大写的字母,多个值之间以逗号分隔。同时我们应该知道的是枚举类型可以像类(class)类型一样,定义为一个单独的文件,当然也可以定义在其他类内部,更重要的是枚举常量在类型安全性和便捷性都很有保证,如果出现类型问题编译器也会提示我们改进,但务必记住枚举表示的类型其取值是必须有限的,也就是说每个值都是可以枚举出来的,比如上述描述的一周共有七天。那么该如何使用呢?如下:

/** * Created by zejian on 2017/5/7. * Blog : http://blog.csdn.net/javazejian [原文地址,请尊重原创] */public class EnumDemo {    public static void main(String[] args){        //直接引用        Day day =Day.MONDAY;    }}//定义枚举类型enum Day {    MONDAY, TUESDAY, WEDNESDAY,    THURSDAY, FRIDAY, SATURDAY, SUNDAY}

就像上述代码那样,直接引用枚举的值即可,这便是枚举类型的最简单模型。

枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

以上有些借鉴 zejian_ 的CSDN 博客 ,全文地址:https://blog.csdn.net/javazejian/article/details/71333103?utm_source=copy。

Java基本数据类型

byte 字节型   1字节(8bit) 初始值:0

char 字符型   2字节(16bit) 初始值:空格

short 短整型   2字节(16bit) 初始值:0

int 整型   4字节(32bit) 初始值:0

long 长整型   8字节(64Bit) 初始值:0L

float 单精度浮点型   4字节(32bit) 初始值:0.0f

double 双精度浮点型   8字节(64bit) 初始值:0.0d

boolean java未明确指出的大小(可能1bit、1byte、4byte) 初始值:false

借鉴洛克七 的CSDN 博客 ,全文地址:https://blog.csdn.net/weixin_39800712/article/details/79001734?utm_source=copy

Java中有两种转换类型

1.自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。

2.强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。

由于基本数据类型中 boolean 类型不是数字型,所以基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。

下面来看下数值类型之间的合法转换图。

图中的实线箭头表示有信息丢失的转换,虚线箭头表示无信息丢失的转换。其转换规则如下:

  • 如果两个操作数中有一个是double类型,另一个就会转换为double类型;
  • 否则,如果有一个操作数是float,另一个就会转化为float;
  • 否则,如果有一个操作数是long,另一个就会转换为long;
  • 否则,两个操作数都将转换为int类型。

部分来自 gulingfengze 的CSDN 博客 ,全文地址:https://blog.csdn.net/gulingfengze/article/details/54094193?utm_source=copy

 

转载于:https://www.cnblogs.com/leity/p/9744517.html

你可能感兴趣的文章
Codeforces 719B Anatoly and Cockroaches
查看>>
ActiveMQ与spring整合
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
格式化输出数字和时间
查看>>
关于TFS2010使用常见问题
查看>>
URL编码与解码
查看>>
Eclipse 安装SVN插件
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>