![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基本特性
树生
吃一片风土 恋一座孤城
展开
-
Java接口的多继承
接口是常量值和方法定义的集合。接口是一种特殊的抽象类。 java类是单继承的。classB extends classA java接口可以多继承。interface3 extends interface0, interface1, interface…… 类不允许类多继承的主要原因是,如果A同事继承B和C,而b和c同时有一个D方法,A如何决定继承哪一个呢? 但接口不存在这样原创 2016-10-21 13:52:33 · 238 阅读 · 0 评论 -
接口和抽象类有什么区别
接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.转载 2016-11-12 13:03:28 · 213 阅读 · 0 评论 -
java中的存储区域
一、栈 在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间, 当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 每个线程包含一个栈区,每个栈中的数据(原始类型原创 2016-10-18 16:00:38 · 279 阅读 · 0 评论 -
向上转型和向下转型
1、父类引用可以指向子类对象,子类引用不能指向父类对象。 2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。 如Father father = new Son(); 3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。 如father就是一个指向子类对象的父类引用,把father赋给子类引用s原创 2016-10-18 15:54:47 · 650 阅读 · 0 评论 -
编译时类型/运行时类型
Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型 例如: Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student。 说明一下编译时类型和运行时类型: Java的引用原创 2016-10-18 15:53:29 · 415 阅读 · 0 评论 -
封装、继承、多态
一、封装 封装性就是把类的属性和行为结合成一个独立的相同单位, 并尽可能隐蔽类的内部细节,对外形成一个边界,只保留有限的对外接口,使之与外部发生联系。 封装的特性使得类以外的部分不能随意存取类的内部属性,保证了程序和数据不受外部干扰且不被误用。 二、继承 1、继承是实现代码复用的重要手段。 Java的继承原创 2016-10-18 15:51:28 · 276 阅读 · 0 评论 -
java泛型的pecs法则
? extend 1 List apples = new ArrayList(); 2 Listextends Fruit> fruits = apples; 3 fruits.add(new Strawberry()); 这次,代码就编译不过去了!Java编译器会阻止你往一个Fruit list转载 2016-10-27 16:34:07 · 318 阅读 · 0 评论 -
重载/覆盖
重载(overload): 对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。 覆盖 (override): 也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。 当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。 发原创 2016-10-18 16:01:19 · 206 阅读 · 0 评论 -
comparable和comparator的区别
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3.....转载 2016-10-23 16:24:30 · 284 阅读 · 0 评论 -
java泛型中<? super String>和<? extends String> 的区别
(1) is any class which is a superclass of String (including String itself). (In this case, the only other suitable class is Object.) 即包括String的父类和它本身的类。 (2) (which in this specific case wouldn'转载 2016-10-22 17:04:22 · 345 阅读 · 0 评论 -
hashcode和equals
首先,想要明白hashCode的作用,必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? 这就是Object.equals方法了。但是,如果每增加原创 2016-10-22 13:21:45 · 222 阅读 · 0 评论 -
String、StringBuilder和StringBuffer之间的区别
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常原创 2016-10-21 15:49:13 · 303 阅读 · 0 评论 -
构造方法和普通方法的区别
1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。 2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的. 3.构造函原创 2016-10-21 15:28:30 · 5020 阅读 · 0 评论 -
java序列化
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候原创 2016-11-20 11:15:14 · 276 阅读 · 0 评论