
Java基础
HeatDeath
Learn by doing!
展开
-
Java 深入学习(17) —— 类的初始化
1 用构造器确保初始化在 Java 中,通过提供构造器,类的设计者可以确保每个对象都会得到初始化。构造器的名称必须与类名完全相同。不接受任何参数的构造器叫 默认构造器。有了构造器形式参数,就可以在初始化对象时提供实际参数。在 Java 中,“初始化” 和 “创建” 捆绑在一起,两者不能分离。构造器是一种特殊类型的方法,因为它没有返回值。2 默认构造器默认构造器(又称“无参”构造器),如果你写的类中没原创 2017-12-08 14:52:30 · 627 阅读 · 0 评论 -
Java 深入学习(18) —— 复用类
1 组合组合是在新类中使用现有类的对象,也就是设计类的时候把要组合的类的对象加入到该类中作为自己的成员变量。组合是has_a的关系。组合的优点: ①:当前对象只能通过所包含的那个对象去调用其方法,所以所包含的对象的内部细节对当前对象时不可见的。 ②:当前对象与包含的对象是一个低耦合关系,如果修改包含对象的类中代码不需要修改当前对象类的代码。 ③:当前对象可以在运行时动态的绑定所包含的对象。可原创 2017-12-09 16:53:13 · 503 阅读 · 0 评论 -
Java 深入学习(10) —— 方法重载与方法重写的区别
方法重载 overload (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载 overload 是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。原创 2017-12-05 10:56:57 · 683 阅读 · 0 评论 -
Java 深入学习(19) —— 继承
在 Java 中使用 extends 关键字来表示继承关系。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从 Object 进行继承。比如下面这段代码:class Person { public Person() { }}class Man extends Person { public Man() { }}类 Man 继承于 Person 类,转载 2017-12-10 10:25:11 · 455 阅读 · 0 评论 -
Java 深入学习(20) —— 访问权限控制
0 包:库单元包(package)内包含一组类(class),他们在单一的名字空间之下被组织在了一起。当编写一个 Java 源码文件时,此文件通常被称为 编译单元。每个编译单元都必须有一个后缀名.java,而在编译单元内则只可以有一个 public 类,该类的名称必须与文件的名称相同(包括大小写)。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,因为他们不是 public原创 2017-12-10 11:20:46 · 750 阅读 · 0 评论 -
Java 深入学习(9) —— 针对接口编程,而不是针对实现编程
“针对接口编程,而不是针对实现编程”——《Head First设计模式》总结理解其实“针对接口编程,而不是针对实现编程”这句话正是利用了Java语言中的多态。编程时针对超类型(父类)进行编程,也就是说变量的声明类型(或方法的返回类型)是超类型,而不是具体的某个子类。超类型中的各个方法的具体实现不在超类型中,而是在各个子类中。这样在程序执行时可以根据实际状况执行到真正的(某个子类)行为。这样带来的好转载 2017-12-03 08:42:21 · 855 阅读 · 0 评论 -
Java 深入学习(8) —— String、StringBuilder、StringBuffer的区别
String1)String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。只能赋值一次,不可再更改。2)上面列举出了String类中所有的成员属性,从上面可以看出String类其实是通过char数组来保存字符串的。无论是sub、concat还是replace原创 2017-11-29 23:12:40 · 619 阅读 · 0 评论 -
Java 深入学习(7) —— Object.hashCode()的返回值与对象内存地址的关系
Java的Object.hashCode()的返回值到底是不是对象内存地址?http://blog.youkuaiyun.com/xusiwei1236/article/details/45152201 刚学Java的时候我也有过这种怀疑,但一直没有验证;最近在OSCHINA上看到有转载 2017-11-29 22:45:13 · 2865 阅读 · 1 评论 -
Java 深入学习(6) —— 打印 String 对象引用时显示的不是 hashCode 而是 String 对象本身的原因
问题概述正常打印一个 Object 对象引用的时候,会默认打印 Object.toString() 方法返回的 getClass().getName() + "@" + Integer.toHexString(hashCode())即打印出 对象所属类的名字与对象的 hashCodeStringCannotChange stringCannotChange = new StringCannotCha原创 2017-11-29 16:46:37 · 1678 阅读 · 1 评论 -
Java 深入学习(5) —— 字符串
String 对象不可变String 类中每一个看起来会修改 String 值的方法,实际上都是创建了一个新的 String 对象,以包含修改后的字符串内容。public class TestString { static String upcase(String s){ return s.toUpperCase(); } publi原创 2017-11-29 15:47:57 · 404 阅读 · 0 评论 -
Java 深入学习(4) —— 一切都是对象及内存分配
用引用操纵对象在 Java 中一切都看做对象,但操纵的标识符实际上是对象的一个“引用”(reference)。可以将这一情形想象成用遥控器(引用)来操纵电视机(对象)。拥有一个引用,并不一定需要一个对象与它关联。但这里所创建的只是引用,并不是对象。String s;一旦创建了一个引用,就希望它能与一个新的对象相关联。new 关键字的意思就是“给我一个新对象”。内存分配程序运行时,内存是怎样分配的呢?原创 2017-11-29 15:06:24 · 425 阅读 · 0 评论 -
Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别
抽象类(Abstract Class)Java 提供一个叫 抽象方法 的机制,这种方法是不完整的,仅有声明而没有方法体。abstract void f();包含抽象方法的类叫做 抽象类。如果一个类包含一个或者多个抽象方法,则该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该新类的对象,就必须为基类中的所有抽象方法提供方法定义。使某个类成为抽象类并不需要所有的方法都是抽象的,所以仅仅需要将某些方原创 2017-11-29 00:33:21 · 472 阅读 · 0 评论 -
Java 深入学习(1) —— 容器类(集合类)Set、List、Queue、Map 之间的区别
容器类大致分类示意图(非精确分类)(绿色表示 interface,蓝色表示 class)容器类类库划分1、 Collection。一个独立元素的序列。这些元素都服从一条或多条规则。List 必须按照插入顺序保存元素Set 不能有重复元素Queue 按照排队规则来确定对象产生的顺序所有 Collection 都可以使用 foreach 遍历Collection 在每个“槽”中只能保存一个元素Co原创 2017-11-28 15:46:51 · 945 阅读 · 0 评论 -
Java 基础 —— 域
在看《Java编程思想》 P172 的时候遇到了一句话——“接口也可以包含域,但是这些域隐式地是 static 和 final 的。”不知道 域 是啥玩意,于是查了一下。http://www.answers.com/Q/What_is_a_field_in_java What is a field in java? A field is an attribute. A field ma原创 2017-11-28 23:36:41 · 440 阅读 · 0 评论 -
Java 基础 —— JRE 和 JDK 的区别
JRE: Java Runtime Environment JDK:Java Development Kit JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包转载 2017-11-28 16:42:59 · 447 阅读 · 0 评论 -
Java 基础 —— String中替换指定字符,字符种类判定,字符大小写转换,遍历字符串
字符串中替换指定字符String str = "Test string";StringBuilder strBuilder = new StringBuilder(str);strBuilder.setCharAt(1, 'X');str=Builder.toString();String不可变StringBuilder可变判定字符的种类Character.isDigit( char c原创 2017-11-23 09:25:49 · 5329 阅读 · 0 评论 -
Java 基础(15)—— 获取项目所在的路径
package com.dataStructure.graph;import java.io.*;import java.util.Scanner;public class PathTest { public PathTest(){ // 获取 class 加载的根路径 // C:\Users\rHotD\IdeaProjects\Data-Structur原创 2017-11-17 09:28:56 · 416 阅读 · 0 评论 -
Java 基础(14)—— 枚举类
http://blog.youkuaiyun.com/qq_31655965/article/details/55049192 有的人说,不推荐使用枚举。有的人说,枚举很好用。究竟怎么使用,如何使用,仁者见仁智者见智。总之,先学会再说~为什么要引入枚举类一个小案例你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯转载 2017-10-27 07:55:31 · 324 阅读 · 0 评论 -
Java 基础(13)—— 匿名内部类
java提高篇(十)—–详解匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下:new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内转载 2017-10-23 12:15:31 · 329 阅读 · 0 评论 -
Java 基础(12)—— 对象序列化
http://www.cnblogs.com/iOS-mt/p/6600177.htmlhttp://blog.youkuaiyun.com/wangloveall/article/details/7992448/—Java序列化是指把Java对象转换为字节序列的过程,采用Java序列化与反序列化技术,一是可以实现数据的持久化,在MVC模式中很是有用。 一、什么是序列化: 序列化理转载 2017-10-23 11:13:11 · 396 阅读 · 0 评论 -
Java 基础(11)—— 回调机制
一个经典例子让你彻彻底底理解java回调机制所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。比较经典的回调方式:Class A实现接口CallBack callback——背景1class A中包含一个class B的引用b ——背景2class B有一个参数为callback的方法f(CallBack callback) ——背景3A转载 2017-10-23 11:07:32 · 382 阅读 · 0 评论 -
Java 基础(10)—— static
原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html1 static关键字的用途 在《Java编程思想》P86页有这样一段话: “ static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要转载 2017-10-10 11:12:25 · 600 阅读 · 0 评论 -
Java 基础(9)—— 对于 堆、栈、方法区的简单理解
1 堆区堆内存用来存放由new创建的对象和数组。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 jvm只有一个heap区,被所有线程共享,不存放基本类型和对象引用,只存放对转载 2017-10-10 10:39:30 · 496 阅读 · 0 评论 -
Java 基础(8)—— 向上转型、向下转型、动态绑定、静态绑定
向上转型与向下转型public class Test { public static void main(String[] args) { System.out.println("------向上转型测试------"); /* 花木兰替父从军 * */ Animal am = new Cat();原创 2017-10-09 17:29:21 · 814 阅读 · 0 评论 -
Java 基础(7)—— super
1.普通的直接引用与this类似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的属性。2.子类中的成员变量或方法与父类中的成员变量或方法同名public class SuperDemo_1 { public static void main(String[] args) { City c = new City(); c.val转载 2017-10-09 12:50:20 · 284 阅读 · 0 评论 -
Java 基础(6)—— 访问修饰符 public、private、protected、默认
* private:只允许在本类中进行访问 * public:允许在任意位置访问* protected:允许在当前类、同包子类/非子类、跨包子类调用;跨包非子类不允许* 默认:允许在当前类、同包子类/非子类调用;跨包子类/非子类不允许调用原创 2017-10-09 10:39:48 · 335 阅读 · 0 评论 -
Java 基础(5)—— 普通代码块、构造代码块、静态代码块
Java中普通代码块,构造代码块,静态代码块区别及代码示例执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块//普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”public class CodeBlock01{转载 2017-10-09 07:05:29 · 342 阅读 · 0 评论 -
Java 基础(4) —— 方法的重载 与 方法的重写
方法重载(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。(3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回值的原创 2017-10-08 13:59:41 · 950 阅读 · 0 评论 -
Java 基础(3) —— this 的用法
用途1:在类里面来引用这个类的属性 this 对象,它可以在类里面来引用这个类的属性和方法。 this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性public class thisDemo_1 { String name = "Mick"; public void print(String name) { // this 对象,它可原创 2017-10-08 11:44:08 · 382 阅读 · 0 评论 -
Java 基础(2) —— 可变参数
Java 可变参数 可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。 注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。可变参数的特点:(1)只能出现在参转载 2017-10-08 10:41:18 · 352 阅读 · 0 评论 -
Java 基础(1)—— public class 与 class 的区别
Java中public class与class的区别Java中public class与class的区别由public关键字修饰的class,其类名称必须与文件名称完全一致,且一个文件只能有一个public class,但可以有多个非public关键字修饰的类,否则编译报错//File name: HelloDemo.java package com.package1; public clas转载 2017-10-08 10:08:25 · 4311 阅读 · 0 评论 -
递归控制
数学归纳法递归编写方法递归的创建链表Node.javapackage com.dataStructure.linked_list;public class Node { private final int value; private Node next; public Node(int value) { this.value = value;原创 2017-11-26 23:16:15 · 588 阅读 · 0 评论 -
Java基础 —— 根据 Key 或是 Value 对 Map 进行排序
how to sort Map values by key in Javahttps://stackoverflow.com/questions/922528/how-to-sort-map-values-by-key-in-javaSort a Map<Key, Value> by values (Java)https://stackoverflow.com/questions/109383/so原创 2017-11-26 18:43:58 · 775 阅读 · 0 评论 -
Java基础 —— HashMap 与 TreeMap
Map 映射表原创 2017-11-26 09:54:03 · 384 阅读 · 0 评论 -
Java基础 —— HashSet 与 TreeSet
HashSet 散列集TreeSet 树集原创 2017-11-26 09:26:15 · 406 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: org/hamcrest/MatcherAssert 的解决办法
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope></dependency><dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcre原创 2017-10-24 16:17:15 · 1901 阅读 · 0 评论 -
提示 java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 的解决办法
java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfigat org.springframework.test.context.web.AbstractGenericWebContextLoader.configureWebResources(AbstractGenericWebContextLoader.java:200)原创 2017-10-24 15:44:39 · 2674 阅读 · 0 评论 -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 的解决办法
MySQL Connector/J is the official JDBC driver for MySQL.下载此文件,放到 项目 lib 目录下,并添加关联即可原创 2017-10-19 18:04:27 · 983 阅读 · 0 评论 -
Java 深入学习(2) —— ArrayList、LinkedList、Vector 应用场景与性能分析
应用场景与性能差异ArrayList 随机访问较快,增删较慢,线程不安全LinkedList 增删较快,随机访问较慢,线程不安全Vector 与 ArrayList 性能相近,但 Vector 线程安全测试代码package com.practice.list;import java.util.*;public class ListCompare { private static fin原创 2017-11-28 19:01:25 · 1061 阅读 · 0 评论 -
Java 深入学习(11) —— HashMap、HashTable、TreeMap 的区别
概要学完了Map的全部内容,我们再回头开开Map的框架图。 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括(01) Map转载 2017-12-05 14:58:25 · 697 阅读 · 0 评论