
java基础
XiaopinOo
想要成长,却是总是无路可走
展开
-
java中的接口、抽象类和类
java中,抽象类和借口的区别和概念。借口不是一种类。原创 2017-03-08 10:49:15 · 518 阅读 · 0 评论 -
不可变类
不可变类(immutable class)是指当创建了这个类的实例后,就不允许修改他的值了,也就是说,一个对象一旦被创构建出来,在其整个生命周期中,他的成员变量就不能再被修改了,他有点类似于常量,只允许别的程序读,不允许别的程序进行修改。 在java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等,此外,String也是不可变类。 定义一个不可变原创 2017-09-08 12:28:06 · 619 阅读 · 0 评论 -
java关键字strictfp
关键字 strictfp是strict float point的缩写,指的是精确浮点,它用来确保浮点数运算的准确性。在JVM在执行浮点数运算时,如果没有指定strictfp关键字,此时计算结果可能会不精确,而且计算结果在不同平台或者厂商的虚拟机上会有不同的结果,导致意想不到的错误,而一旦使用了strictfp来声明一个类,接口或者方法,那么在所声明的范围内,java编译器以及运行环境会完全依照IE原创 2017-09-08 11:17:07 · 984 阅读 · 0 评论 -
switch参数支持的类型
switch(expr)中,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式。其中整数表达式可以是基本类型int或其对应的包装类型Integer,当然也包括不同长度的整型,例如:short。由于btye,short和char类型的值都可以被隐式的转换为in类型,因此这些类型以及他们的包装类型都可以作为switch的表达式里。与switch对应的是case语句,原创 2017-09-08 10:20:53 · 1099 阅读 · 0 评论 -
抽象类和接口有什么异同
接口和抽象类的相同点:1.都不能被实例化2.接口的实现类或者抽象类的子类都只有实现了接口或者抽象类中的方法后才能被实例化。接口和抽象类的不同点:1.接口只有定义,其方法不能在接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类可以有定义与实现,即其方法可以在抽象类中被实现。2.接口需要实现(implements),但是抽象类需要继承(extends)。一个类可原创 2017-09-07 18:41:36 · 9407 阅读 · 1 评论 -
面向对象有哪些特征
面向对象的主要特征包括抽象,继承,封装和多态 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分的注意与当前目标有关的方面。抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一个是过程抽象,一个是数据抽象2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确的表述共性的方法。对象的一个新类可以从现有的类中派生,原创 2017-09-07 17:19:17 · 852 阅读 · 0 评论 -
java中四种创建对象的方式
共有四种创建对象的方法: 1. 通过new语句实例化一个对象, 2. 通过反射机制创建对象,Class.forName("类的路径") 3. 通过clone()方法创建一个对象 4. 通过反序列化的方式创建对象在反射机制中,class是一个非常重要的类,共有三种方法可以获取到class类 1. class.forName("类的路径"); 2. 类名.c原创 2017-09-07 16:58:23 · 431 阅读 · 0 评论 -
java中的clone(深复制和浅复制)
浅复制:被复制对象的所有变量都含有与原来对象想通过的值,而所有对其他对象的引用仍然指向原来的对象,换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制:被复制对象的所有变量都含有与原来对象相同的值,除去那些引用其他对象的变量,那些引用其他对象的变量将指向被复制的新对象,而不再是原有的那些被引用的对象,换言之,深复制的对象所引用的对象都复制了一遍。使用clone()方法原创 2017-09-07 16:48:19 · 376 阅读 · 0 评论 -
如何理解多态、封装、继承
面向对象的三个基本特征是:封装、继承、多态封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 封装的意义: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏,在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合很密切,从而保护它不被其他的函数以转载 2017-09-06 20:25:34 · 484 阅读 · 0 评论 -
Math类中的round、ceil和floor方法的功能介绍
1.round方法表示四舍五入。round方法表示四舍五入,round,意为环绕,原理是在原来数字的基础上先增加0.5然后在向下取整,等同于(int)Math.floor(x+0.5f),他的返回值类型是int类型,例如,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。2.ceil方法的功能是向上取整,ceil,意为“天花板”,顾名思义就是对操作原创 2017-09-08 15:38:15 · 1754 阅读 · 0 评论 -
java的类加载机制
java平台主要包括两个模块:JVM和java APIJVM是一个虚构出来的计算机,用来把java编译生成的中间代码转换为机器可以识别的编码并运行。它有自己完善的硬件结构,如处理器,堆栈,寄存器等,还具有相应的指令系统,它屏蔽了与具体操作系统平台相关的信息,使得java程序只需要生成JVM上运行的目标代码,就可以在多种平台上不加修改的顺序执行,每当一个java程序运行时。都会有一个对应原创 2017-09-09 21:58:06 · 284 阅读 · 0 评论 -
网络编程总结(一)
在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是TCP协议和UDP协议,其中UDP协议是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。UDP连接: UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外原创 2017-10-29 22:34:42 · 337 阅读 · 0 评论 -
JAVA使用TCP协议的过程中端口号的指定。
最近在学网络编程,看到一句话很不解,客户端的端口号不需要指定,系统会自动给当前这个应用程序分配一个空闲的端口号,但是服务器端的端口号必须指定,用于接收来自客户端的信息。其实是自己基础不扎实把,服务器端的端口号是通过ServerSocket类的构造函数的参数指定的,定义:ServerSocket(int port)创建绑定到指定端口的服务器套接字。 而Socket类的构造函数中的原创 2017-10-30 15:41:32 · 1867 阅读 · 0 评论 -
getDeclaredFields和getFields的区别以及相似的
getFields只能获得类中公共的字段,包含父类中的公共的字段getDeclaredFields获得类中所有的字段,包括共有字段和私有字段,默认字段和受保护字段。但是不能获得父类中所有的字段获得类的类型的字段,获得类的类型的构造器以及方法都有相应的getDeclare和get。。。方法,都类似原创 2017-10-30 21:51:30 · 1272 阅读 · 0 评论 -
hash值相等,equals一定相等吗,equals相等,hash值一定相等吗
两者之间唯一的必然关系被你说反了,equls返回为true,则两者的hashcode一定相等,意即相等的对象必须具有相等的哈希码。每当equals方法被覆写,通常需要重写hashCode方法从而保持对象行为的一致性。而具有相等的hashcode的两个对象equals不一定成立。你可以这样认为也行,hashcode是作为一个对象存储的参考,hash表本身是一种散列表,在数据存储这块,功效比较大,转载 2017-10-21 21:44:23 · 10726 阅读 · 3 评论 -
输入输出流的shutdownoutput和shutdowninput方法的使用(文件默认有一个-1的结束标志位)
最近做练习的时候遇到上传文件可以上传成功,但是上传文件之后返回反馈的时候,总是不能成功返回反馈,添加shutdownoutput就可以了,练习如下:server端代码:public class server { public static void main(String[] args) throws IOException { ServerSocket ss=new Serve原创 2017-10-29 20:31:38 · 2985 阅读 · 0 评论 -
序列化过程遇到java.io.EOFException
最近刚刚学习序列化,遇到一个java.io.EOFException的异常,百度了以下说是因为程序没有判断好到底应该从哪里结尾。我在写入数据的时候,直接存储的是多个Student类型的对象,然后结束,当取出这些对象的时候遇到了错误。End of File异常。通常是读取反序列化的本地文件中的内容出现异常。当文件读完以后没有跳出循环,还在继续读,就容易引发此异常。解决方式有三种:1.转载 2017-10-27 20:29:18 · 2250 阅读 · 0 评论 -
java内存泄漏
内存泄漏是指一个不再被程序使用的对象或者变量还在内存中占有存储空间。在java语言中判断一个内存空间是否符合垃圾回收的标准有两个:第一:给对象赋予了空值null,以后再也没有使用过。第二:给对象赋予了新值,重新分配了内存空间。内存泄漏的两种情况:一:在堆中申请的空间没有被释放,二:对象不再使用,但仍然还在内存中保留着。垃圾回收机制的引入可以有效的解决第一种情况,而对于第原创 2017-09-10 10:40:30 · 336 阅读 · 1 评论 -
JVM虚拟机调优---------垃圾收集器算法
标记-清除法: 算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的,他主要有两个不足:一个是效率问题,标记和清除两个过程的效率都不高,另一个是空间问题,标记清楚后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大的对转载 2017-08-04 18:45:01 · 535 阅读 · 1 评论 -
数组的初始化方式
1 数组变量:是引用类型变量(不是基本变量)引用变量通过数组的内存地址位置引用了一个数组(数组对象),即栓到数组对象的绳子。数组变量:是引用类型变量(不是基本变量)引用变量通过数组的内存地址位置引用了一个数组(数组对象),即栓到数组对象的绳子。2 数组有3中创建(初始化)方式:①new int[10000] 给元素数量,适合不知道具体元素,或元素数量较多时②new int[]{3,4,5} 不原创 2017-09-05 22:05:23 · 627 阅读 · 0 评论 -
OutOfMemoryError异常
java堆栈溢出: java堆用于存储对象实例,只要不断地创建对象,并且保证GCRoots 到对象之间有可达的路径来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆容量限制后就会产生内存溢出异常。虚拟机和本地方法栈溢出: 由于在HotSpot虚拟机中并不区分去你机栈和本地方法栈,因此,对于HotSpot来说,虽然-Xosscanshu (设置本地方法栈大小)存转载 2017-08-04 18:12:31 · 267 阅读 · 0 评论 -
方法的覆写原则--------一同两大一小
1.子类中方法与父类方法具有相同的返回值类型; 子类声明返回的类型也可以是父类声明返回类型的子类2.子类中方法与父类中方法有相同的方法签名;3.子类中方法的访问权限不能小于父类方法的访问权限;4.子类方法不能抛出新的异常类型;5.子类方法可以同时声明抛出多个父类方法声明抛出异常类的子类(RuntimeEexception除外)方法签名:方转载 2017-04-08 16:15:57 · 2570 阅读 · 0 评论 -
万事万物皆对象、类的类类型的创建
在面向对象的世界里,万事万物皆对象。类是对象,类是java.lang.Class类的对象。这个对象我们称之为该类的类类型。成员变量也是对象,它是java.lang.reflect.Field类的对象。成员方法也是对象,一个成员方法就是一个Method对象。一些基本数据类型也是对象,他们都分别有对自己的封装类。构造函数也是对象,封装在java.lang,Constractor原创 2017-03-13 08:27:58 · 510 阅读 · 0 评论 -
java中监听器和session的一个练习
默认情况下第一次访问服务器,服务器端就会产生一个session对象,再会话期内,这个对象一直存在。但是可以通过修改一些配置来设置浏览器每次请求访问的时候不产生session对象。(有什么不对的,大家可以指出来啊,自己对session的理解不是很到位。)在做这个例子的时候,无论如何我都获取不到EL表达式的值,想了半天终于知道了。首先我在运行代码的时候,浏览器一直在运行原创 2017-03-11 18:43:48 · 930 阅读 · 1 评论 -
java web中的监听器的基础知识
(1)监听器定义:java监听器:1.是web规范中定义的一种特殊的类。2.用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件。3.用于监听对象的属性发生修改的事件。4.可以在事件发生前,发生后做一些处理。5.实现监听,必须实现接口并配置xml文件。web监听器监听客户端的请求、服务器端的请原创 2017-03-11 16:59:42 · 737 阅读 · 0 评论 -
java注解
java注解是1.5版本及以后版本引入的新特性。java注解:java提供了一种源程序中的关联任何信息和任何元素的方法。注解出现在java方法的上边一行常见的java注解:jdk注解:@Override、@Depecated、@Suppvisewarinings@Override注解告诉我们或者编译器这个方法覆盖了父类的方法@Depe原创 2017-03-10 19:49:52 · 445 阅读 · 0 评论 -
java 赋值操作符:基本类型的赋值和对象的赋值
赋值操作符“=”,它表达的意思是取右边的值,把它赋给左边。“=”运算符的使用分两种情况:1.对基本类型的赋值:基本类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接从一个地方赋值到了另外一个地方,如对基本类型a=b,那么b的内容就赋值给了a,若接着有修改了a,而b根本不会受到这种影响。2.对对象进行赋值:对对象进行赋值,我们实际操作的是对象的引原创 2017-03-10 08:31:05 · 2351 阅读 · 0 评论 -
在csdn上超链接的使用超链接的使用
你想csdn网址吗?原创 2017-03-08 18:23:02 · 713 阅读 · 0 评论 -
mybatis框架的配置
1)mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。(这个名字是随便取的) mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。2)通过mybatis环境等配置信息构造SqlSess转载 2017-03-25 20:36:59 · 454 阅读 · 0 评论 -
使用mabatis进行mapper开发实例
mybatis框架的使用 1)单独使用jdbc解决实际问题 2)使用mybatis进行原始dao开发 3)使用mybatis进行mapper接口的dao开发SqlMapConfig.xml的配置文件的一些配置Mapper.xml文件的配置MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注转载 2017-03-25 19:02:00 · 877 阅读 · 0 评论 -
new Integer(123)==new Integer(123)为false和new Integer(123)==123为true
new Integer(123)==new Integer(123);为false,首先看一下Integer的构造方法:public Integer(int value) { this.value = value; }无论是创建Integer时传入的参数是多少,他都会将创建一个新的Integer对象,所以对象的引用也就不同,结果为falsenew Integer原创 2017-08-02 16:01:47 · 2370 阅读 · 1 评论 -
实现文件的复制
最近做了一个小练习,实现文件的复制,分为两种方法,一种是通过字符流实现复制和通过字节流实现复制原创 2017-04-20 16:42:12 · 468 阅读 · 0 评论 -
java动态代理类的实现
动态代理分为:JDK动态代理和CGLIB动态代理JDK动态代理和CGLIB动态代理类的区别:JDK动态代理:1.只能代理实现了的接口的类;2.没有实现接口的类不能实现JDK的动态代理。CGLIB动态代理:1.针对类来实现代理;2.对指定目标产生一个子类,通过方法拦截技术拦截所有的父类方法的调用。JDK的动态代理需要一个实现了InvocationHandler的接口和Prox原创 2017-03-16 18:47:00 · 480 阅读 · 0 评论 -
java的代理模式(动态代理和静态代理)
代理模式的基本定义:为其他对象提供一种代理已控制对这个对象的访问,代理祈祷中介的作用,可以去掉功能服务或增加额外的服务。常见的几种代理模式如图:下边我们详细介绍智能引用代理我们通过一个例子了解静态代理和动态代理静态代理类的实现创建一个Car接口public interface Move {public void run原创 2017-03-16 17:49:14 · 373 阅读 · 0 评论 -
Class对象的引用的获取
个人理解:Class对象的引用就是一个指向类在编译之后生成的对应的.class文件的指针。而编译后生成的.class文件就是Class对象。在讲Class对象的引用和获取之前我们先了解一下JVM虚拟机的加载原理所有的类都是在对其第一次使用时,动态加载到JVM虚拟机中,当程序创建第一个类的静态成员的引用时,就会加载这个类,这个证明构造器也是累的静态方法,及时在构造器之前没有使用sta转载 2017-03-16 19:21:26 · 554 阅读 · 0 评论 -
使用mybatis进行jdbc的开发(实例)
mybatis框架的使用1)单独使用jdbc解决实际问题2)使用mybatis进行原始dao开发3)使用mybatis进行mapper接口的dao开发SqlMapConfig.xml的配置文件的一些配置Mapper.xml文件的配置MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱转载 2017-03-25 17:13:07 · 929 阅读 · 0 评论 -
使用mybatis进行普通的dao开发实例
mybatis框架的使用 1)单独使用jdbc解决实际问题 2)使用mybatis进行原始dao开发 3)使用mybatis进行mapper接口的dao开发SqlMapConfig.xml的配置文件的一些配置Mapper.xml文件的配置MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注转载 2017-03-25 17:36:27 · 689 阅读 · 0 评论 -
Class的字节码文件
字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。原创 2017-12-14 20:12:15 · 512 阅读 · 0 评论