java基础
xinjing_wangtao
这个作者很懒,什么都没留下…
展开
-
Java语法糖4:内部类
内部类最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类。内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。所以内部类的名字完全可以和它的外部类名字相同。内部类分为四种:成员内部类、转载 2016-09-21 17:07:52 · 675 阅读 · 0 评论 -
Java语法糖3:泛型
泛型初探在泛型(Generic type或Generics)出现之前,是这么写代码的:public static void main(String[] args){ List list = new ArrayList(); list.add("123"); list.add("456"); System.out.println((转载 2016-09-21 17:07:22 · 495 阅读 · 0 评论 -
Java语法糖2:自动装箱和自动拆箱
前言一开始想学学自动拆箱和自动装箱是被这个名字吸引到,听上去好像很高端的样子,其实自动拆箱、自动装箱是很简单的内容。 自动拆箱和自动装箱Java为每种基本数据类型都提供了对应的包装器类型。举个例子:public class TestMain{ public static void main(String[] args) { In转载 2016-09-21 17:06:50 · 451 阅读 · 0 评论 -
Java语法糖1:可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖。语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能、或能提升语法的严谨性、或能减少编码出错的机会。Java转载 2016-09-21 17:06:16 · 452 阅读 · 0 评论 -
反射
反射的作用Java反射描述的是,在运行状态中:1、对于任意一个类,都能够知道这个类的所有属性和方法2、对于任意一个类,都能够调用它的任意一个属性和方法之所以强调属性、方法,是因为属性、方法是开发者对于一个类最关注的两个部分。实际上通过反射,不仅仅可以获知类的属性、方法,还可以获知类的父类、接口、包等信息至于反射的原理,不难,Java类加载机制一文中讲到了,一个类在加载的转载 2016-09-21 17:05:42 · 348 阅读 · 0 评论 -
Cloneable接口和Object的clone()方法
为什么要克隆为什么要使用克隆,这其实反映的是一个很现实的问题,假如我们有一个对象:public class SimpleObject implements Cloneable{ private String str; public SimpleObject() { System.out.println("Enter Sim转载 2016-09-21 17:05:03 · 358 阅读 · 0 评论 -
说说WeakReference弱引用
WeakReference弱引用概述http://www.cnblogs.com/xrq730/p/4836700.html,关于Java的四种引用状态具体请参看此文Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。但是现实的情况时,写代码的时候,往往通过把所有指向某个对象的引用置空来保证这个对象在下转载 2016-09-21 17:04:24 · 498 阅读 · 0 评论 -
JDBC学习2:为什么要写Class.forName("XXX")?
Class.forName(String name)接上一篇JDBC。本来这个内容是放在前面的一篇里面的一起的,后来发现越写越多,想想看就算了,还是单独开一篇文章好了,这样也能写得更加详细点。上一篇文章的第4点,getConnection()方法里面,我把从.properties里面获取mysqlpackage的地方替换成实际的value值,那么替换后的应该是Class.forNa转载 2016-09-21 17:03:42 · 1456 阅读 · 1 评论 -
谈谈多态
概述我们都知道面向对象有四个基本特性:抽象、封装、继承、多态。这四个特性,概括起来可以这么理解,抽象、封装、继承是多态的基础,多态是抽象、封装、继承的表现。多态,是Java中非常重要的一个部分,所以今天来谈一下多态(Polymorphism)。 什么是多态不同类的对象对同一消息作出不同的响应就叫做多态。就像上课铃响了,上体育课的学生跑到操场上站好,上语文课的学生在教室里坐好一样。转载 2016-09-21 16:55:43 · 289 阅读 · 0 评论 -
java的四种引用,强弱软虚,用到的场景 (r)
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: 1Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMe转载 2016-09-18 17:04:03 · 401 阅读 · 0 评论 -
Java引用介绍 (r)
1 Java引用介绍 Java从1.2版本开始引入了4种引用,这4种引用的级别由高到低依次为: 强引用 > 软引用 > 弱引用 > 虚引用⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终转载 2016-09-11 22:31:42 · 398 阅读 · 0 评论 -
Java强引用、软引用、弱引用、虚引用详解 (r)
Java中没有指针的概念,而引用就是一个弱化的指针,保证开发不能任意操作内存。最近整理了一下之前不明白的各种级别引用:强引用、软引用、弱引用、虚引用,它们的特点和应用场景汇总如下: 1、强引用 如果一个对象具有强引用,GC绝不会回收它;当内存空间不足,JVM宁愿抛出OutOfMemoryError错误。一般new出来的对象都是强引用,如下//强引用 User strangeRefer转载 2016-09-11 22:24:18 · 600 阅读 · 0 评论 -
Java 随机数
本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示。广义上讲,Java中的随机数的有三种产生方式:(01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。(02). 通过Math.random()返回一个0到1之间的double值。(03). 通过Random类来产生一个随机数,这个是专业的Random工具类,转载 2016-09-12 16:44:09 · 268 阅读 · 0 评论 -
Java hashCode() 和 equals()的若干问题解答
本章的内容主要解决下面几个问题:1 equals() 的作用是什么?2 equals() 与 == 的区别是什么?3 hashCode() 的作用是什么?4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用equals() 的作用是 用来判断两个对象是否相等。equals(转载 2016-09-12 16:43:45 · 239 阅读 · 0 评论 -
Java 中 Comparable 和 Comparator 比较
本文,先介绍Comparable 和Comparator两个接口,以及它们的差异;接着,通过示例,对它们的使用方法进行说明。 Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List转载 2016-09-11 22:32:35 · 210 阅读 · 0 评论 -
JAVA泛型编程笔记
JAVA泛型编程笔记 ——by书生1介绍Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。下面是一个不用泛型例子:List myIntList=new LinkedList转载 2016-06-19 21:53:12 · 369 阅读 · 0 评论 -
谈谈final的作用
前言一直想写写这个话题。代表公司也面试过一些求职者,每次面试我必问的两个问题之一就是“请你谈一谈对于final关键字的理解”。这是一个简单的小问题,但是不要小看它,通过对这个问题的回答以及一些简单的扩展就能看出一个求职者的基础是否扎实以及是否有钻研精神。OK,开始进入主题。 final关键字的作用相信对于final的用法,大多数人都可以随口说出三句话:1、被final修转载 2016-09-21 16:56:23 · 395 阅读 · 0 评论 -
static关键字作用总结
之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static。final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否有钻研精神。静态变量和静态方法static关键字最基本的用法是:1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来2、被static转载 2016-09-21 16:56:52 · 346 阅读 · 0 评论 -
Java对象表示方式1:序列化、反序列化和transient关键字的作用
平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态。一个Java对象的表示有各种各样的方式,Java本身也提供给了用户一种表示对象的方式,那就是序列化。换句话说,序列化只是表示对象的一种方式而已。OK,有了序列化,那么必然有反序列化,我们先看一下转载 2016-09-21 16:57:41 · 367 阅读 · 0 评论 -
JDBC学习1:详解JDBC使用
什么是JDBCJDBC(Java Database Connectivity),即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供同一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,根据这种基准可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。总而言之,JDBC做了三件事:1、与数据库建立连接2、转载 2016-09-21 17:03:00 · 469 阅读 · 0 评论 -
Comparable和Comparator的区别
初次碰到这个问题是之前有一次电话面试,问了一个小时的问题,其中有一个问题就问到Comparable和Comparator的区别,当时没答出来。之后是公司入职时候做的一套Java编程题,里面用JUnit跑用例的时候也用到了Comparator接口,再加上JDK的大量的类包括常见的String、Byte、Char、Date等都实现了Comparable接口,因此要学习一下这两个类的区别以及用法转载 2016-09-21 17:02:21 · 329 阅读 · 0 评论 -
自定义一个类加载器
为什么要自定义类加载器类加载机制:http://www.cnblogs.com/xrq730/p/4844915.html类加载器:http://www.cnblogs.com/xrq730/p/4845144.html这两篇文章已经详细讲解了类加载机制和类加载器,还剩最后一个问题没有讲解,就是自定义类加载器。为什么我们要自定义类加载器?因为虽然Java中给用户提供了很多类加载转载 2016-09-21 17:01:39 · 425 阅读 · 0 评论 -
讲讲HashCode的作用
前言Object提供给我们了一个Native的方法“public native int hashCode();”,本文讲讲Hash是什么以及HashCode的作用 Hash先用一张图看下什么是HashHash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值。关于散列值,有以下几个关键结论:1、如果散列表中存在和散列原始输转载 2016-09-21 17:00:46 · 414 阅读 · 0 评论 -
从为什么String=String谈到StringBuilder和StringBuffer
前言有这么一段代码:1 public class TestMain2 {3 public static void main(String[] args)4 {5 String str0 = "123";6 String str1 = "123";7 System.out.println(str0 =转载 2016-09-21 17:00:17 · 306 阅读 · 0 评论 -
System.load(String filename)和System.loadLibrary(String libname)的区别
前言之前一篇文章在写Native方法的时候,第一个步骤里面有这么一段代码?static{ System.load("D:"+ File.separator + "Hello.dll");}其实JDK提供给用户了两个方法用于载入文件,一个是System.load(String filename)转载 2016-09-21 16:59:50 · 386 阅读 · 0 评论 -
自己实现一个Native方法的调用
JNI开始本篇的内容之前,首先要讲一下JNI。Java很好,使用的人很多、应用极广,但是Java不是完美的。Java的不足体现在运行速度要比传统的C++慢上许多之外,还有Java无法直接访问到操作系统底层如硬件系统,为此Java提供了JNI来实现对于底层的访问。JNI,Java Native Interface,它是Java的SDK一部分,JNI允许Java代码使用以其他语言编写的代码转载 2016-09-21 16:58:53 · 486 阅读 · 0 评论 -
Java对象表示方式2:XStream实现对对象的XML化
上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象。总结一下这种对象表示方式的优缺点:1、纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持2、多语言环境下,使用Java序列化方式进行存储后,很难用其他语言还原出结果3、占用的字节数比较大,而且序列化、反序列化效率也不高前面也提到过,对象表示有各种各样的方式,序列化只转载 2016-09-21 16:58:17 · 271 阅读 · 0 评论