JAVA 直接量
2016-06-08 15:47
239 查看
本页面更新日期: 2016年06月08日
例如在 int a = 5; 这行代码中, 为变量 a 所分配的初始值 5 就是一个直接量.
能指定直接量的通常只有三种类型
基本类型
int 类型直接量: 整型数值, 可以 二进制, 十进制, 八进制 和 十六进制来表示. 例如十进制的: 5
long 类型直接量: 在整型数值后面添加 L , 例如 3L
float 类型直接量: 在一个浮点数后面添加 F. 例如 5.34F
double 类型直接量: 一个浮点数, 例如 5.34
boolean 类型直接量: 这个类型的直接量只有 true 和 false
char 类型直接量: 三种形式, 单引号括起来的字符, 转义字符, 和 Unicode值. 例如 ‘a’ ‘\n’ ‘\u0061’
字符串类型
一个用双引号括起来的字符就是String类型的直接量, 例如 “哈哈哈”
null 类型
null类型是一种特殊类型, 它只有一个值: null. 而且它可以赋值给任何引用类型的变量.用以表示这个引用类型变量中保存的地址为空, 也就是没有指向任何有效对象.
关于引用类型, 以后的以后 会讲到.
关于字符串直接量需要注意, 当程序第一次使用字符串直接量时, JAVA会使用 常量池来缓存该字符串直接量, 如果程序后面的部分需要用到该字符串直接量时, JAVA会直接使用常量池中的字符串直接量.
常量池 这个名词看起来高大上, 其实就是将一个字符串保存在了内存当中, 谁想用直接拿去用, JAVA就不用重新生成这个字符串直接量了. 看到没, 其实就是 JAVA在偷懒!
常量池指的是在编译期被确定, 并且保存在已编译的 .class 文件 中的一些数据. 它包括关于类, 方法, 接口中的常量, 也包括字符串直接量.
让我们写段代码试试看.
运行的结果是两个 ture.
是不是很有意思呢? s0 是原装的 s2 是拼接的 这都能相同?
因为 JAVA会确保每个字符串常量只有一个, 不会产生多个副本. 这么做是为了节省内存空间, 提升程序运行效率.
he 和 llo 拼接之后就是 hello , 所以 s0 == s2 ,返回 true
前言
直接量 是指 在程序中通过源代码直接给出的值.例如在 int a = 5; 这行代码中, 为变量 a 所分配的初始值 5 就是一个直接量.
直接量的类型
并不是所有的数据类型都可以指定直接量.能指定直接量的通常只有三种类型
基本类型
int 类型直接量: 整型数值, 可以 二进制, 十进制, 八进制 和 十六进制来表示. 例如十进制的: 5
long 类型直接量: 在整型数值后面添加 L , 例如 3L
float 类型直接量: 在一个浮点数后面添加 F. 例如 5.34F
double 类型直接量: 一个浮点数, 例如 5.34
boolean 类型直接量: 这个类型的直接量只有 true 和 false
char 类型直接量: 三种形式, 单引号括起来的字符, 转义字符, 和 Unicode值. 例如 ‘a’ ‘\n’ ‘\u0061’
字符串类型
一个用双引号括起来的字符就是String类型的直接量, 例如 “哈哈哈”
null 类型
null类型是一种特殊类型, 它只有一个值: null. 而且它可以赋值给任何引用类型的变量.用以表示这个引用类型变量中保存的地址为空, 也就是没有指向任何有效对象.
关于引用类型, 以后的以后 会讲到.
直接量的赋值
以下代码都是OK的int a = 5; char c = 'a'; boolean b = true; float f = 5.12F; double d = 4.12; String myself = "我是一个欢乐的小逗比";
关于字符串直接量需要注意, 当程序第一次使用字符串直接量时, JAVA会使用 常量池来缓存该字符串直接量, 如果程序后面的部分需要用到该字符串直接量时, JAVA会直接使用常量池中的字符串直接量.
常量池 这个名词看起来高大上, 其实就是将一个字符串保存在了内存当中, 谁想用直接拿去用, JAVA就不用重新生成这个字符串直接量了. 看到没, 其实就是 JAVA在偷懒!
常量池指的是在编译期被确定, 并且保存在已编译的 .class 文件 中的一些数据. 它包括关于类, 方法, 接口中的常量, 也包括字符串直接量.
让我们写段代码试试看.
public class VariablesDirectly { public static void main(String[] args) { String s0 = "hello"; String s1 = "hello"; String s2 = "he" + "llo"; //让我们做个比较 看看他们相同么? System.out.println( s0 == s1 ); //下面这个有意思 System.out.println( s0 == s2 ); } }
运行的结果是两个 ture.
是不是很有意思呢? s0 是原装的 s2 是拼接的 这都能相同?
因为 JAVA会确保每个字符串常量只有一个, 不会产生多个副本. 这么做是为了节省内存空间, 提升程序运行效率.
he 和 llo 拼接之后就是 hello , 所以 s0 == s2 ,返回 true
结尾
如果你想学习更多JAVA知识, 可以 点我进入目录页相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序