java基础疑点分析
来源:互联网 发布:淘宝排名优化怎么做 编辑:程序博客网 时间:2024/06/10 20:55
本篇主要对java基础一些原理性概念以及特性进行讲解,希望大神能够多多指教,提出其中的错误;
同时可能有些问题没有注意到,也希望大家能够提醒
(1)类型自动转换和类型强制转换
(包括基本数据类型的转换和引用类型的转换)问:基本数据类型自动转换执行原因以及如何实现类型转换
基本数据类型自动转换执行原因:
<1>基本数据类型间运算导致数据类型向上转型
<2>整型数据默认int类型,浮点型数据默认double类型
基本数据类型间转换原理:
不同数据类型在内存中有相应内存空间,根据向上补全以及向下截取
对内存空间的更改实现数据类型之间转换
引用数据类型间强制转换:
eg:Father s = new Son();
以上例子执行动作包括三步:
在堆中的对象池中创建Son对象内存空间;
在堆中的句柄池中创建名字为s的Father对象引用
将Son对象内存空间地址复制到s对象引用内
eg:Son son = (Son)s;
以上动作包括两步:
根据s的继承抽象树判断类型是否匹配,不匹配则抛出ClassCastException
创建类型为Son的son对象引用并将s引用复制给son引用
(2)数据缓存机制
Integer缓存机制:
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
try {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
} catch( NumberFormatException nfe) {
// If the property cannot be parsed into an int, ignore it.
}
}
high = h;
cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127;
}
private IntegerCache() {}
}
类似地,基本数据类型通过内部类的方式将-128~127内数据进行缓存操作,
目的是减少创建对象的内存消耗,提高性能;
注意的是缓存机制并不是不创建对象,而是同一数值只创建一次对象
(3)自动装箱和拆箱机制
概念:在方法调用和赋值等操作中实现基本数据类型和包装类型间的转换
目的:集合的操作是基于对象的;同时能够提高代码整洁性
(4)java各版本新特性
转载:http://www.importnew.com/844.html
1. JDK Version1.1
<1>引入jdbc
<2>支持内部类
<3>引入javabean
<4>引入RMI
<5>引入反射
2. J2SE Version 1.2
<1>引入集合框架
<2>对字符串常量做内存映射
<3>引入JIT编译器
<4>引入对打包java文件进行数字签名
<5>引入控制授权访问系统资源的策略工具
<6>引入JFC,包括Swing1.0,拖放和java2D类库
<7>引入java插件
<8>在jdbc引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
<9>在applet添加声音支持
3. J2SE Version 1.3
<1>引入Java Sound API
<2>jar文件索引
<3>对Java的各个方面都做了大量优化和增强
4. J2SE Version 1.4
<1>XML处理;
<2>Java打印服务;
<3>引入Logging API;
<4>引入Java Web Start;
<5>引入JDBC 3.0 API;
<6>引入断言;
<7>引入Preferences API;
<8>引入链式异常处理;
<9>支持IPv6;
<10>支持正则表达式;
<11>引入Image I/O slot machine API
5. J2SE Version 5
<1>引入泛型
<2>增强循环,可以使用迭代方式
<3>自动装箱与自动拆箱
<4>类型安全的枚举
<5>可变参数
<6>静态引入
<7>元数据(注解)
<8>引入Instrumentation
6. J2SE Version 6
<1>支持脚本语言
<2>引入JDBC 4.0 API
<3>引入Java Compiler API
<4>可插拔注解
<5>增加对Native PKI、Java GSS、Kerberos和LDAP的支持
<6>继承Web Services
7. J2SE Version 7
<1>switch语句块中允许以字符串作为分支条件
<2>在创建泛型对象时应用类型推断
<3>在一个语句块中捕获多种异常
<4>支持动态语言
<5>支持try-with-resources
<6>引入Java NIO.2开发包
<7>数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线
<8>钻石型语法
<9>null值的自动处理
8. J2SE Version 8
参考http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
<1>函数式接口
<2>Lambda表达式
<3>对接口的增强,包括默认方法和静态方法
<4>集合流式操作,实现对集合的并行处理和函数式操作
<5>扩展注解的使用范围
<6>增加安全性,包括支持更强的基于密码的基于AES加密算法
<7>改进了IO/NIO实现
<8>完善全球化功能,支持新增的unicode标准,新增日历和本地化的API
0 0
- java基础疑点分析
- android SQLite疑点分析
- xpath 绝对路径定位疑点分析
- T-SQL常见基础疑点问答总结
- SDK范例CompiledEffect分析及疑点探讨
- (ZZ)关于java,javac命令的疑点
- T-SQL常见基础疑点问答总结(1)
- T-SQL常见基础疑点问答整理(2)
- T-SQL常见基础疑点问答总结(1)
- 我的java学习之路疑点小结
- java多线程基础分析
- JAVA基础--内存分析
- java基础数据类型分析
- 【java基础】内存分析
- java基础内存分析
- JAVA基础-ThreadLocal分析
- Java 基础分析
- java基础-hashmap分析
- VJ水题堆-关于斐波那契数列的求解过程
- CDR如何备份和恢复文件
- google 2fa 双因子印证
- placeholder属性的兼容问题
- ORACLE 11GR2 安装学习时使用的示例数据库
- java基础疑点分析
- 在C++/VC中map以及hash_map的常用操作简介!
- capwap学习笔记——初识capwap(二)
- html 身份证最后一位计算
- 【DP入门】超级台阶
- linux命令: ps、grep、kill
- C语言 递归(回溯) 解决数独问题
- 自定义View(一) 初识自定义view
- iOS设备处理器的指令集