Java
Sleeping-Cat
这个作者很懒,什么都没留下…
展开
-
Java变量命名规范
名称必须以字母,下划线(_)或$符号开头,不能用数字除第一个字符外,后面可以用数字避开Java关键字, 如int, public,final顺便谈谈匈牙利命名法:原则匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重原创 2017-03-02 11:04:17 · 599 阅读 · 0 评论 -
HashSet是如何检查重复?
当把对象加入到HashSet时,它会用对象的hashcode值来判断加入位置。同时它也会拿这个新值与已经加入的值作比较。如果没有相符的hashcode,HashSet就会假设新对象没有重复出现。如果hashcode相同,也不能代表两个对象相等。需要进一步调用equals()来对比是否两个对象相同。对象hashCode的默认行为是对heap上的对象产生独特的值。如果没有override过原创 2017-03-05 20:05:40 · 1654 阅读 · 0 评论 -
数组多态与泛型多态
首先看看数组的多态是怎样处理的?Dog,Cat都继承Animal类。函数feedAnimals(Animal[ ] animal)的输入参数是基类Animal数组。Dog [ ] dogs = { new Dog(), new Dog(), new Dog(), new Dog()}feedAnimals(dogs){ for(Animal a: animals){原创 2017-03-05 20:56:59 · 452 阅读 · 0 评论 -
Java中String数据类型
基本数据类型包括byte、int、char、long、float、double、boolean和short。String不是基本数据类型java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类转自:http://wangjc-opal.iteye.com/blog/232550转载 2017-03-02 14:28:30 · 482 阅读 · 0 评论 -
Java参数传递是通过值传递
Java参数传递是通过值传递,也就是拷贝传递。int x = 0x111;void go(int z){ z=0;}go(x);println("x=", x);打印结果x=7 (0x111). x被传入方法go后,只是把它的值拷贝后赋给了z变量。z变量的任何变化,不会改变原来x的值。Java里面没有c语言一样的地址指针,这也是Java安全的基础,更是Ja原创 2017-03-02 13:46:15 · 418 阅读 · 0 评论 -
Java反射机制
反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。反射的作用就是在运行时再去生成对象,这个功能成就了很多框架,比如Spring,把Java Bean的配置文件写在XML里,运行时才生成对象。这样使得代码直接有原来的直接依赖,变成了读配置文件,生成对象的方式,降低了代码耦合度。package my.unittes原创 2017-03-20 14:14:42 · 381 阅读 · 0 评论 -
Java接口继承接口
Java的接口可以继承另一个接口interface abc{public void a();}public interface WorkFlow extends abc{public void process();public void exit();}当一个实现类实现子接口的时候,父接口的方法也必须在实现类实现。class impl imp原创 2017-03-10 17:20:46 · 729 阅读 · 0 评论 -
快速理解Java虚拟机
转自: http://blog.csdn.net/luanlouis/article/details/50412126Java虚拟机文章太长,如何从一段程序运行来理解JVM做了什么事?参加这位专家的博客,图画得是相当的好。[java] view plain copy print?package org.louis.jvm.codeset;转载 2017-03-21 13:40:58 · 309 阅读 · 0 评论 -
Java中private、protected、public和default的区别
Protected的控制符相当宽松了,只是外部包不能访问。Default就是给内部包访问的,就如同friendly。注意申明时候没有注明控制符的,就算是defaultPrivate当然就只是给类内部访问了,子类都不可以。转载 2017-03-09 13:57:27 · 344 阅读 · 0 评论 -
Spring如何运用Java反射机制实现IOC
Java可以通过反射机制动态生成对象。例程见Java反射机制 从示例上可以看出,Java通过Class.forName()就可以生成类对象,然后生成类实例。而且可以通过Field设备属性。Class c1 = Class.forName("my.unittest.com.Book"); Object o = c1.newInstance();Book b = (Book原创 2017-03-20 16:48:16 · 1594 阅读 · 0 评论 -
Java序列化-实例
对象必须实现序列化这个接口才能被序列化。如果父类实现序列化,则子类也就自动地实现了,而不管是否有明确的申明。当对象被序列化时,整个对象版图都会被序列化。这代表它的实例变量所引用的对象也会被序列化。如果父类不能序列化,则子类系列化的时候,会调用父类的构造函数。如果类依赖的对象不能序列化,则在类序列化时抛出异常除非该实例被标记为transient。否则,该变量在还原的时候会被赋予null或primitive值类型的默认值读取对象顺序必须与写入对象顺序一样readObject()的返回类型是Objec原创 2017-03-15 17:20:33 · 534 阅读 · 0 评论 -
List, Set和Map区别
List:集合中的对象按照检索位置排序,可以有重复对象。 List直接可以用下标取集合中对象,如list[0]Set:集合中对象不按特定的方式排序,并且没有重复对象 Set 貌似只能遍历 for (String str : set) { System.out.println(str);}Map:集合中每一个元素包含一对键-值对象,集原创 2017-03-05 17:32:49 · 295 阅读 · 0 评论 -
什么是泛型?
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Java语言引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。如下面代码所示,集合类list里可以添加任意object,当集合里被加入不同类型的对象时,对集合里的数据处理时就可能出现运行时错误。 1 List list = new ArrayList(); 2 list.a原创 2017-03-05 15:59:01 · 354 阅读 · 0 评论 -
Java异常处理
对于有运行风险的函数需要定义抛出异常public void test() throws Exception{ if(条件发生) throw new Exception();}调用此类有抛出异常的函数,就需要也抛出异常或放入该调用到Try Catch语句。否则不能通过编译。只有RuntimeException类的异常例外。Java认为RuntimeExcep原创 2017-03-03 15:46:05 · 228 阅读 · 0 评论 -
如何理解封装
Head First Java里比喻封装,就像裤子。很搞笑,没有封装就等于没穿裤子,所有都被外人开到了。封装就是隐藏内部细节,只对外暴露想暴露的方法和数值。封装的好处: 1、良好的封装能够减少耦合 举个例子,把成员变量比如age定义为private值,所有外部类只有通过 people.setAge()来改变age值。在setAge函数里原创 2017-03-02 13:58:57 · 1259 阅读 · 0 评论 -
Java两种变量值类型和引用Primitive和Reference
主数据类型有int,long,byte,float,boolean等8种,java虚拟机会给每个主数据类型分配存储空间,每个有独立存储空间,不能共享。 int c = 10; int d = c; c++; d--; System.out.printf("c=%d, d=%d \n", c, d);原创 2017-03-02 11:25:40 · 2562 阅读 · 0 评论 -
Java值数组和对象数组
Java主数据类型数组里装的是主数据类型,如int,每个都是在堆了占空间的。Java对象类型数组装的都是引用类型,就当时一堆指针,一堆“遥控器”,只有创建实例后,才指向堆里的实例。Dog[ ] pets;pets = new Dog[7]; //产生7个指向null的Dog对象pets[0] = new Dog(); //创建Dog实例,并让pets[0]指向该实例再原创 2017-03-02 13:27:48 · 510 阅读 · 0 评论 -
Java类成员变量与函数局部变量
类成员变量未初始化,也会有缺省值,但是局部变量未初始化并且后面代码会使用到它,就会编译不过。static int a;static String b;public static void main(String[] args) { System.out.println(a); //打印结果为 0 System.out.println(b)原创 2017-03-02 15:45:20 · 365 阅读 · 0 评论 -
Java的import与C的include
Java的import与C的include并不一样,import只是帮程序在编译时找的需要的包,省略了写全包路径。并不会使编译后的文件变大。即便import了所有的包,也不会增加程序大小。C语言不同。程序编译的时候,会经历一个预处理的过程,#include标记的头文件中的函数声明会被加入到目标文件中,然后经历过编译、链接,生成正确的目标程序。引入无用的头文件,会导致目标程序变大。原创 2017-03-03 08:55:45 · 1264 阅读 · 0 评论 -
父类引用转化为子类引用
对象引用实际上就是一个指针,父类的引用可以指向一个子类实例的。但是这个引用是不能调用子类扩展的方法的。比如:Class A{ void f(){ }}Class B extends A{ void f1(){ }}A a = new (B);a.f1(); //编译不通过,因为对象A是没有f1()方法的。(B)a.f1(); //原创 2017-03-03 09:51:00 · 1483 阅读 · 0 评论 -
Java有了继承,为什么还要接口
显示世界里有多重继承的需求,如下图。猫和狗分属不同的科目,但是它们都是宠物。它们应该有宠物类的共有行为。看上去猫和狗需要也继承宠物类,如果宠物类与动物类都继承一种生物类,势必出现菱形继承情况。如下图。当底层类调用两个父类都具有的方法时,编译器就不知道该调用哪一个了。为解决以上问题,Java引入了接口这个方式,接口实际是是一个纯的只具有抽象方法的集合,它没有任何实现,不会导致原创 2017-03-03 10:19:54 · 3693 阅读 · 1 评论 -
Java的构造函数调用
如果类没有定义构造函数,Java编译器就会给类生成一个构造函数(无参的)。如果类定义了构造函数,无论是有参的构造函数还是无参的构造函数,编译器都不会在为再为类生成构造函数。当子类调用构造函数的时候,可以显示的调用super(),也就是调用父类的构造函数。如果没有显示的调用,编译器也会自动调用父类的无参的构造函数。 父类只定义了一个有参的构造函数的时候,也就是父类没有无参构造原创 2017-03-03 13:20:20 · 1600 阅读 · 0 评论 -
Java里的final
final被用到最多的应该是final一个类,这样就不能被继承了。String就是Java里的一个final类。final class NoInherit{}final还能放在变量前,表示该变量不能被修改。final也能防止方法前,表示该方法不能被覆盖。原创 2017-03-03 14:42:18 · 271 阅读 · 0 评论 -
Java的autoboxing
Java值数据类型包括byte、int、char、long、float、double、boolean和short。Autoboxing可以转换这些值类型到对应的类。比如int,到Integer, double到Double,boolean到Boolean。collection类如ArrayList,在申明的时候括号里必须是类,如ArrayList array. 不过array 直接可以加原创 2017-03-03 15:11:58 · 701 阅读 · 0 评论 -
Java的运算符-取整,取绝对值,取余数
舍掉小数取整:Math.floor(3.5)=3四舍五入取整:Math.rint(3.5)=4进位取整:Math.ceil(3.1)=4 取绝对值:Math.abs(-3.5)=3.5取余数:A%B = 余数原创 2017-03-09 16:21:11 · 159685 阅读 · 1 评论