张孝祥Java高新技术汇总
一、自动装箱和拆箱:
在Java中有8种基本数据类型:byte,short,int,long,float,double,char,boolean。而基本数据类型不是对象,这时人们给他们定义了包装类,使其成为对象,具有对象的性质。Byte,Bhort,Integer,Long,Float,Double,Character,Boolean。
装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。(通俗点理解:系统帮我们自动new基本类型对应的对象。)int包装成Integer、float包装成Float
拆箱:和装箱相反,将包装类的对象简化成值类型的数据。
Integer a = 100; 这是自动装箱
int b = new Integer(100); 这是自动拆箱
注意:
当 int 的取值在 -128 ~ 127 之间的时候,这时候系统并不会每次都帮我们去 new 一个 Integer 对象,而是取值相同的对象只会被 new 一次,
取值相同的 Integer 对象系统不会再去 new 一次,而是共享了已有的这个 Integer 对象。
而当 int 的取值在 -128 ~ 127 之外的时候,这时候不管 Integer 对象的取值是否一样,系统都会去 new 一个。
二、可变参数的类型:
有些方法里的参数个数不确定,这时怎么办呢?
可以重载这个方法,重载时在里面传入不同的参数。
但是有时参数个数不确定或者太多,这时我们应该使用可变参数类型。
三、增强for循环:
语法结构:
for ( type 变量名:集合变量名 ) { … }
四、枚举(enum):
枚举其实是一个特殊的类,里面定义了一些常量(static final )。
五、反射机制:
首先什么是Class类。
在java中,每次用一个类创建一个对象,与此类相关的Class对象就自动创建了,这个Class对象包含该类的相关信息,如成员变量,方法,等信息。
此外,Class类还有很多方法,最常见的如JDBC里加载数据库驱动的方法:加载ODBC驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
获得class对象有三种方式:
方式一:对象.getClass()
方式二:类.class
方式三:使用Class类中静态方法,Class.forName(类)
package wang.test;
import java.util.Date;
public class Test {
/**
* @param args
* 获得Class对象的三种方式
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
Person p = new Person();
//方式一:对象.getClass()
Class p_cla = p.getClass();
//方式二:类.class
Class date_cla = Date.class;
//方式三:使用Class类中静态方法,Class.forName(类)
Class str_cla = Class.forName("java.lang.String");
System.out.println(p_cla);
System.out.println(date_cla);
System.out.println(str_cla);
System.out.println("________________________________________________");
System.out.println(p_cla.getClassLoader());//获得该类的类装载器
System.out.println(p_cla.isPrimitive());//判断该类是否是java的基本类型
}
}
运行结果:
搞懂了什么是Class类,就容易理解Java反射机制了。因为Class类是反射机制的原理基础。
简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,
那么就可以通过反射机制来获得类的所有信息。
六、内省机制:
七、泛型:
这篇博客讲得很清楚:点击打开链接
八、类加载器:
这篇博客讲得很清楚:(因为老显示该链接为被禁用链接,所以请百度:年年去旅行Java 类加载器)
张孝祥Java高新技术汇总的更多相关文章
- 35_张孝祥Java高新技术_为注解增加各种属性
注解的作用之所以那么强大,就是因为它有属性 注解很像接口,属性很像方法. 什么是注解的属性 一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智播客的学生,否则,就不是.如果还想区分出事传智播客 ...
- 张孝祥java高新技术 --- jkd1.5 新特性 -- 精华总结
1. 抽象方法的使用 如果一个方法中大量出现if语句, 那么, 就应该考虑使用抽象来处理. 如下例: package com.lxl; public class Weekend { //周日 publ ...
- 张孝祥java高新技术 --- jkd1.5 新特性
1. 静态导入 import static java.lang.Math.max; 2. 可变参数 3. 自动装箱,拆箱 4. 枚举
- (转)JAVA排序汇总
JAVA排序汇总 package com.softeem.jbs.lesson4; import java.util.Random; /** * 排序测试类 * * 排序算法的分类如下: * 1.插入 ...
- Java设计模式汇总
Java设计模式汇总 设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式. ...
- Java高新技术 注解
Java高新技术 注解 知识概要: (1)了解注解 (2)注解的应用结构图 (3)@Retention(RetentionPolicy.RUNTIME) ...
- Java高新技术 JavaBean内省
Java高新技术 JavaBean内省 知识概要: (1)了解JavaBean内省 (2)JavaBean的简单内省操作 ...
- Java高新技术 反射机制
Java高新技术 反射机制 知识概要: (1)反射的基石 (2)反射 (3)Constructor类 (4)Field类 (5)Method类 (6)用反射方 ...
- Java高新技术 JDK1.5之新特性
Java高新技术 JDK1.5的新特性 知识概要: (1)静态导入 (2)可变参数 (3)增强for循环 (4)基本数据类型的自动拆箱和装箱 静态导入 ...
随机推荐
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
UNIX网络编程----传输层:TCP.UDP.SCTP 一.概述 本章的焦点是传输层:包括TCP.UDP.和SCTP(流控制传输协议).SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令. ...
- oracle日期函数集锦
oracle 中select TO_CHAR(sysdate,'Mon') from dual; Question:出来是中文的“6月” 我想要英文的怎么办? Answer:select to_cha ...
- oracle ORA-00913: 值过多
--oracle中查看表是否被锁 查看表是否被锁 SELECT /*+ rule*/ a.sid, b.owner, object_name, object_type FROM v$loc ...
- IO库 8.6
题目:重写7.1.1节的书店程序(P229),从一个文件中读取交易记录.将文件名作为一个参数传递给main. #include <iostream> #include <fstrea ...
- 文件上传input type="file"样式美化
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 说出x的结果,并解释为什么?
var x = 1; if(function f(){}){ x += typeof f; } x; //x的结果是? x=1undefined 首先是 if表达式的问题 if括号里,不一定非要用== ...
- GetMemory()函数
NO1 void GetMemory(char *p) { p=(char *)malloc(100); } void Test() { char * str=NULL; GetMemory(str) ...
- dell PowerEdge R720 自动重启分析
dell PowerEdge R720 自动重启分析 摘要: 一,问题描述: 在同一批服务器当中,碰到这样一台服务器,如果不跑任何服务时没有问题,但一跑任务就是自动重启.既然同样的系统别的服务器都没出 ...
- 30款javascript脚本插件 jquery插件大全
Shifty Nav - a Fully Responsive JS CSS3 Mega Menu Show Demo Shifty Nav is a fully responsive CSS3 ...
- 浅谈Web Api配合SignalR的跨域支持
最近接手的一个项目中,涉及到一个简单的消息模块,由于之前有简单了解过SignalR,所以打算尝试着摸索摸索~! 首先,通过Nuget管理器添加Microsoft ASP.NET SignalR引用~目 ...