![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 89
疯狂1024
热爱编程
展开
-
java实现克隆的三种(很最全面)
1、浅复制(浅克隆)这种浅复制,其实也就是把被复制的这个对象的一些变量值拿过来了。最后生成student2还是一个新的对象。public class CloneTest1{ public static void main(String[] args) throws Exception { Student student = new Student(); student.setAge(...原创 2018-05-25 17:59:49 · 44809 阅读 · 6 评论 -
java的构造方法的理解与限定
首先java在new出一个子类的时候,第一步先看看这个类有哪些父类,先吧父类从最顶层到最下一层加载到jvm中(静态的属性和方法也一并加载)。然后此时才去构建对象,先去调用顶层父类的构造方法构造父类对象,然后一层一层往下调用构造方法去创建对象。最后才是调用这个子类的构造方法去创建对象。注:有一个父类,一个子类。当去构建子类对象实例的时候首先自动构建父类的对象(没有父亲就没有孩子),这个时候如果父类有...原创 2018-05-28 17:51:26 · 528 阅读 · 0 评论 -
常见字符对应的ASCII值
常见字符的ASCII码值如下:空格的ASCII码值为32;数字0到9的ASCII码值分别为48到57;大写字母“A”到“Z”的ASCII码值分别为65到90;小写字母“a”到“z”的ASCII码值分别为97到到122。...原创 2018-06-05 20:29:14 · 35301 阅读 · 1 评论 -
在web项目中实现会话跟踪(http协议是无状态)
HTTP是“无状态”协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息。即使那些支持持续性 HTTP 连接的服务器,尽管多个客户请求连续发生且间隔很短时它们会保持 socket 打开,但是,它们也没有提供维护上下文信息的内建支持。上下文的缺失引起许多困难。例如,在线商店的客户向他们的购物车中加入商品时,服务器如何知道购...原创 2018-06-07 17:49:14 · 1510 阅读 · 0 评论 -
HashMap和HashTable之间的区别
总结一下hashMap和hashtable方面的知识点吧: 1. 关于HashMap的一些说法: a) HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap的底层结构是一个数组,数组中的每一项是一条链表。 b) HashMap的实例有俩个参数影响其性能: “初始容量” 和 装填因子。 c) HashMap实现不同步,线程不安全。 HashTable线程安...原创 2018-06-07 18:30:44 · 9237 阅读 · 0 评论 -
管道机制
管道实际上是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。它类似于通信中半双工信道的进程通信机制,一个管道可以实现双向 的数据传输,而同一个时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容 量大小通常为内存上的一页,它的大小并不是受磁盘容量大小的限制。当管道满时,进程在 ...原创 2018-06-07 18:37:49 · 2983 阅读 · 0 评论 -
java中的析构函数
乍一看,java里面怎么还有这样的词语。其实:析构函数(destructor) 与 构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。java中有析构函数,但我们一般用不到它,因为java有自动内存回收机制,无需程序员来释放...原创 2018-06-08 20:23:44 · 24444 阅读 · 0 评论 -
(~)运算符的理解与解析
~运算符,这个运算是一个按位取反运算符,如1的二进制是0000 0001.然后这些都按位取反就是:1111 1110取反后这个最是计算机表示的数都是补码。然后需要把这个转化为原码才是十进制对应的值。首先这个最高位是1.所以这个是一个负数,首先转为为反码:1111 1101;然后转化为原码:最高位不变,其他位取反。1000 0010这个数的最高位代表的是一个符号,所以是-2;...原创 2018-06-08 21:55:08 · 2732 阅读 · 0 评论 -
Java数据库连接库JDBC用到设计模式
桥接模式:定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。意图 :将抽象与实现解耦。桥接模式所涉及的角色 1. Abstraction :定义抽象接口,拥有一个Implementor类型的对象引用 2. RefinedAbstraction :扩展Abstraction中的接口定义 3. Implementor :是具体实现的接口,Implementor和RefinedAbst...原创 2018-06-09 01:02:43 · 4402 阅读 · 0 评论 -
Ecplise或者Myecplise在运行普通java代码:一直处于运行状态starting running
出现这样的原因是因为你当前的工作空间的项目太多了。所以解决的办法:更换你的工作空间,可以直接项目中file->switch workspace->或者关闭后重新打开选择一个新的工作空间...原创 2018-06-09 12:24:32 · 1636 阅读 · 0 评论 -
(转载)JDO快速入门(原理详解)
JDO快速入门Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为Java数据库连接(JDBC)的一个补充来介绍的,而JDBC是一个支持使用SOL语句对流行的数据库程序进行访问的接口。有了 JDO,程序员就可以使用类来定义数据对象,然后支撑程序就会根据类...转载 2018-06-09 16:37:54 · 5982 阅读 · 0 评论 -
JVM加载类的实现方式
JVM加载类的实现方式,我们称为 双亲委托模型:如果一个类加载器收到了类加载的请求,他首先不会自己去尝试加载这个类,而是把这个请求委托给自己的父加载器,每一层的类加载器都是如此,因此所有的类加载请求最终都应该传送到顶层的Bootstrap ClassLoader中,只有当父加载器反馈自己无法完成加载请求时,子加载器才会尝试自己加载。双亲委托模型的重要用途是为了解决类载入过程中的安全性问题。假设有一...原创 2018-06-09 17:38:55 · 347 阅读 · 0 评论 -
有状态和无状态的区别
基本概念: 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。代码更好理解:Java代码 public class Statef...转载 2018-07-27 14:05:33 · 12510 阅读 · 0 评论 -
内部类详解
1.使用内部类的原因:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个外围类中,可以让多个...原创 2018-08-14 21:36:59 · 342 阅读 · 0 评论 -
同步方法与同步块的区别
java使用synchronized同步,分为四种情况: 实例方法同步 实例方法中同步块 静态方法同步 静态方法中同步块我们从两个方面来说他们的不同,一个是同步方法和同步块的区别,一个是静态和非静态的区别。同步方法就是在方法前加关键字synchronized,然后被同步的方法一次只能有一个线程进入,其他线程等待。而同步方法则是在方法内部使用大括号使得一个代码块得到同步。同步块会有一...转载 2018-05-23 12:36:06 · 1618 阅读 · 1 评论 -
static这个关键字什么意思?java中静态方法为什么不能重写?
“static”关键字是什么意思?static这个关键字表明当前这个这个方法或者属性是属于类的。在类加载的时候就随着加载进内存、所有的对象都共享同一份的静态变量或者静态方法。static关键字修饰的属性和方法,可以直接通过 类名.属性名(方法名) 进行访问。java中静态方法为什么不能重写?首先宏观的说:是因为非静态的方法是基于运行时动态绑定的,而static方法则是编译时静态绑定的。细致点...原创 2018-05-23 11:02:13 · 510 阅读 · 0 评论 -
java中的heep和stack在各方面的应用
1.Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。 (1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。 (2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。 (3)stack中的对象或变量只要定义好就可使用了,应用程...转载 2018-05-23 00:03:57 · 706 阅读 · 2 评论 -
java中的内部类(四种包含实现代码较全)
局部内部类:定义在方法中,在局部类中的方法只能访问定义多所在的方法的外面的final类型的属性,也可以访问局部内部类中的属性。实例化这个局部内部类的时候也只能够在这个定义这个类的方法中使用:class LocalInner{ public void doSomething() { final int b = 5; final int a = 4; //局部内部类的成员变量必须是f...原创 2018-05-25 22:21:48 · 1030 阅读 · 0 评论 -
Java assertion 介绍和用法
一、assertion的语法和语义J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新。在软件开发中,assertion是一种经典的调试、测试方式,本文将深入解析assertion功能的使用以及其设计理念,并给出相关的例子 。assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eif...转载 2018-05-21 23:30:33 · 3855 阅读 · 0 评论 -
Java中的Math.round()和Math.ceil(),Math.floor()区别
ceil方法:static double ceil(double a)返回值为double类型,返回一个大于或等于参数a的最小整数。即它返回一个整数,这个整数是所有大于等于a的整数中最小的一个。floor方法:static double floor(double a)返回值为double类型,返回一个小于或等于参数a的最大整数。即它返回一个整数,这个整数是所有小于等于a的整数中最大的一个。roun...原创 2018-05-21 23:34:26 · 6640 阅读 · 0 评论 -
抽象方法不能是static或native或synchroniz 原因及误解
在网上看到过这么一篇文章,是关于抽象方法不能是static或native或synchroniz 的原因。其中提到了这些关键字的意义以及与 abstract 关键字的冲突,大体内容如下: 1、abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。 2、static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是...转载 2018-05-22 00:13:10 · 1184 阅读 · 1 评论 -
为什么Java中用最有效率的方法算出2 乘以8
因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位即可,而位运算cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是2 << 3。 //计算2*8=2*23 System.out.println(2<<3);//8=2的3次方为8...原创 2018-05-22 00:22:41 · 2007 阅读 · 0 评论 -
关于Java对象作为参数传递是传值还是传引用的问题
前言 在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引用,那么此时对形参的操作则会影响到实参。 首先我们来看一句代码:Object obj = new Object();12 这句话的意思是:创建一个Object对象,再创建一个名为obj的引用,...转载 2018-05-22 00:32:14 · 6572 阅读 · 2 评论 -
IO流的整体介绍(较全面)
IO流分为字节流和字符流,首先在介绍IO流的同时先介绍下文件的基本操作:对于定位一个文件或者文件夹: File file = new File("d:\\abc\text.text");//可以 File file2 = new File("d:/text.text");//可以 File file3 = new File("d:\...原创 2018-05-26 10:12:41 · 800 阅读 · 0 评论 -
Thread线程的讲解(单线程、多线程、多任务、比较、用法、同步、线程安全)
多线程:多线程则指的是在单个程序中可以同时运行多个不同的线程执行不同的任务.线程是程序内的顺序控制流,只能使用分配给程序的资源和环境。多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。一个进程可以包含一个或多个线程一个程序实现多个代码同时交替运...原创 2018-05-26 16:22:13 · 2488 阅读 · 0 评论 -
一个字符串需要逆序输出实现翻转
第一种数组序号: String s1 = "abcdefg"; char[] ch = s1.toCharArray(); char[] ch2 = new char[ch.length]; for(int i = 0; i < ch.length; i ++) { ch2[i] = ch[ch.length-i-1]; System.out.p...原创 2018-05-22 16:51:15 · 681 阅读 · 0 评论 -
什么样的类是线程安全的?什么样的类是线程不安全的?
除了不可变类是自动线程安全的,另外就是在类中带有synchronized关键字的也是为了使这个类变成线程安全的.避免并发问题的两种手段也就这两种,不变性和隔离性,synchronized就是为了实现隔离性,以使并行的访问变为线性的访问. 如果一个可变类没有一个synchronized关键字,他肯定不是线程安全的,HashMap就是这样的可变类,并且没有synchronized.带有synchron...原创 2018-05-22 23:24:02 · 5534 阅读 · 2 评论 -
Java中的Serializable接口和事务中的事务隔离级别Serializable
Java中的Serializable接口和事务中的事务隔离级别Serializable,虽说单词一样,但它们之间基本没关系. Java中的Serializable接口是实现一个内存对象保存成磁盘文件并从磁盘文件恢复成内存对象的机制. 事务隔离级别Serializable是实现多个访问共享数据的事务得以线性顺序进行机制的....原创 2018-05-22 23:26:48 · 596 阅读 · 0 评论 -
为什么ArrayList线程不安全?不安全为什么要使用?如何解决线程不安全?
1、为什么ArrayList线程不安全?首先说一下什么是线程不安全:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。如图,List接口下面有两个实现,一个是ArrayList,另外一个是...原创 2018-05-22 23:39:39 · 12551 阅读 · 4 评论 -
java中short s1 = 1;s1 = s1 + 1;会出错而short s1+=1;能编译通过
1、对于short s1 = 1; s1 = s1 + 1;。 s1 是short类型的变量,在和int类型的1进行运算时会自动的将short->int, 然后执行复制操作符“=”,就会发生类型的错误,左边是short类型,右边是int类型的变量。而在java中规定低位的数据类型向高位的数据类型可以进行自动转换(隐式)转换,而高位向低位类型转换要进行强制的类型说明。因为在高位向低位数据类型的...原创 2018-08-16 09:30:09 · 2367 阅读 · 0 评论