Java
文章平均质量分 68
Simple_Zz
这个作者很懒,什么都没留下…
展开
-
Java 代码编译和执行的整个过程
Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制 类加载机制 类执行机制Java源码编译机制Java 源码编译由以下三个过程组成:分析和输入到符号表 注解处理 语义分析和生成class文件流程图如下所...原创 2012-02-08 22:52:34 · 7288 阅读 · 0 评论 -
Java final/static/native 关键字
finalfinal关键字代表“最终的”,“无法改变”的含义,通过final的存在能够提高程序效率、更好的进行程序设计。final修饰的类型有:类、变量、方法、参数final类 final类是不可被继承的,fianl类的成员变量也默认都是fianl。在设计类时,如果这个类不需要子类,类的实现细节不允许改变,就是用final类 final方法 final方法不允许子类进行重写。...原创 2012-01-31 11:56:18 · 1784 阅读 · 0 评论 -
Java 可变参数
Java在1.5之后允许方法使用可变参数,可变参数的好处在于:它允许传递0个或者多个参数。比如原来有一段代码如下:public class Test { public static void main(String[] args) { test(); test(new String[]{"a"}); test(new String...原创 2012-01-14 15:05:24 · 1185 阅读 · 0 评论 -
Java 深拷贝/浅拷贝
首先来看看浅拷贝和深拷贝的定义:浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝。也就是说浅拷贝只复制一个对象,传递引用,不能复制实例。而深拷贝对对象内部的引用均复制,它是创建一个新的实例,并且复制实例。...原创 2012-01-15 17:28:18 · 1065 阅读 · 0 评论 -
Java BIO NIO
IO 通信模型网络通信的本质是网络间的数据 IO。只要有 IO,就会有阻塞或非阻塞的问题,无论这个 IO 是网络的,还是硬盘的。原因在于程序是运行在系统之上的,任何形式的 IO 操作发起都需要系统的支持。BIO (阻塞模式)BIO 即 blocking IO,是一种阻塞式的 IO。jdk1.4 版本之前 Socket 即 BIO 模式。BIO 的问题在于 accept()、rea...原创 2012-02-06 17:36:26 · 1549 阅读 · 0 评论 -
【面向对象】 低耦合高内聚
耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息内聚性也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。低耦合粗浅的理解是:一...原创 2012-01-10 15:23:59 · 5488 阅读 · 0 评论 -
Java 重写(覆盖)/重载 override与overload的区别
首先从概念上重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。 重写Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。其次,一般的方法签名的格式如下...原创 2012-01-07 18:01:42 · 455 阅读 · 0 评论 -
Java String/StringBuffer/StringBuilder
三者在执行速度方面的比较:StringBuilder > StringBuffer > String String <(StringBuffer,StringBuilder)的原因String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量从上面的名字可以看到,String是“字符串常量”,也就是不可改变的对象。对...原创 2012-01-11 22:53:15 · 317 阅读 · 0 评论 -
Java 内存管理和垃圾回收
JVM内存组成结构JVM栈由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To Space组成,结构图如下所示:新生代。新建的对象都是用新生代分配内存,Ed...原创 2012-07-20 16:08:19 · 4665 阅读 · 0 评论 -
JavaEE与大数据的区别
架构层面:JavaEE体系:三层架构 表现层(Web) 业务层(service) 持久层(Dao)。 大数据体系:围绕数据 数据采集(数据源) 数据存储 数据计算(分析) 数据展示。 技术层面:JavaEE: 成熟 解决方案多 技术点集中。 大数据:相对年轻 迭代更新快 解决方案相对少 技术相当繁琐 杂、碎。 开发层面:JavaEE: 代码量很大 偏向业务 ...原创 2018-09-04 10:05:07 · 3544 阅读 · 0 评论 -
Java JVM内存调优
首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源(主...原创 2013-10-29 14:47:47 · 5731 阅读 · 0 评论 -
玩转Java面试 -- OOP
面向对象(OOP) 【面向对象】 三大特性、五大原则 1、面向对象的特征有哪些方面?【类、抽象类、接口】【封装、继承、多态】 2、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不...原创 2018-09-04 20:21:54 · 5534 阅读 · 0 评论 -
Java TreeMap / HashMap 区别
一般情况下我们选用HashMap,因为HashMap的键值对在取出时是随机的,其依据键的hashCode和键的equals方法存取数据,具有很快的访问速度,所以在Map中插入、删除及索引元素时其是效率最高的实现。而TreeMap的键值对在取出时是排过序的,所以效率会低点。HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()(可以重写h...原创 2012-01-19 16:18:45 · 548 阅读 · 0 评论 -
网络编程
概述通过通信线路(有线或无线)可以把不同地理位置且相互独立的计算机连同其外部设备连接起来,组成计算机网络。在操作系统、网络管理软件及网络通信协议的管理和协调下,可以实现计算机之间的资源共享和信息的传递。网络编程是指用来实现网络互联的不同计算机上运行的程序间可以进行数据交换。对我们来说即如何用编程语言 java 实现计算机网络中不同计算机之间的通信。网络通信三要素IP 地址、端口号...原创 2018-09-04 12:00:14 · 480 阅读 · 0 评论 -
玩转Java面试 -- 关键字
1、抽象的 abstract 方法,是否可以被 static 、 native 、synchronized 修饰?都不能,抽象方法需要子类重写。 静态的方法是无法被重写的,因此二者是矛盾的。 本地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。 synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。 2、是否可以继承...原创 2018-09-14 13:24:52 · 351 阅读 · 0 评论 -
【面向对象】 三大特性、五大原则
三大特性:封装、继承、多态五大基本原则:SRP、OCP、LSP、DIP、ISP什么是面向对象面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产...原创 2018-09-04 12:16:16 · 5788 阅读 · 0 评论 -
Java Comparable Comparator
对于自己定义的数据结构,进行排序时,需要我们给予他一定的排序规则,这就涉及到了Java中的两个常用的接口Comparable<T>和Comparator<T>的实现。Comparablepublic interface Comparable<T>Comparable 接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的 ...原创 2012-01-11 19:23:17 · 507 阅读 · 0 评论 -
Java 继承/实现 extends 与 implements区别
extends 是继承父类,只要那个类不是声明final或者定义为abstract就能继承,Java中不支持多重继承,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。比如:class A extends B implements C,D,E(){ //class子类名extends父类名implements接口名 }父类与子类继承关系上的不同...原创 2012-01-09 19:37:24 · 2518 阅读 · 0 评论 -
Java 类/抽象类/接口
Java的类可以分为三类:类:使用class定义,没有abstract方法。 抽象类:使用abstract class定义,可以有也可以没有abstract方法。 接口:使用inerface定义,只能有abstract方法。在这三个类型之间存在如下关系:类可以继承:类、抽象类(必须实现所有抽象方法),可以实现多个接口(必须实现所有接口方法)。 抽象类可以继承:类,抽象类(可随意实现...原创 2012-01-06 20:47:59 · 431 阅读 · 0 评论 -
Java 基本结构
从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要:Java代码编译和执行的整个过程 JVM内存管理及垃圾回收机制下面将这两个部分进行详细学习...原创 2012-02-06 17:42:58 · 2264 阅读 · 0 评论 -
Java 四舍五入与保留位
四舍五入// 四舍五入经典案例public void testRound() { System.out.println("11.5的四舍五入值:" + Math.round(12.5)); System.out.println("-11.5的四舍五入值:" + Math.round(-12.5));}// 运行结果// 11.5的四舍五入值:12// -11....原创 2012-02-03 14:02:15 · 1943 阅读 · 0 评论 -
Java 基本数据类型/运算符
Java 基本数据类型基本类型 包装类 字节数 位数 最大值 最小值 boolean Boolean 1byte 8bit true fasle byte Byte 1byte 8bit 2^7 - 1 -2^7 short Short 2byte 16bit 2^15...原创 2012-01-31 16:05:35 · 2098 阅读 · 0 评论 -
Java RPC
什么是 RPCRPC(Remote Procedure Call Protocol)远程过程调用协议。通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个过程或函数,就像调用本地应用程序中的一样。正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 主要 特质RPC 是协议:协议意味着规范。目前典型的 RPC ...原创 2012-02-03 14:50:35 · 1783 阅读 · 0 评论 -
Java 短路计算 && ||
所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。短路运算符只能用于逻辑表达式内,非短路运算符可用于位表达式和逻辑表达式内。也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。什么是&&和||的短路运算?1、&& 和 || 属于逻辑运算符。表达式1 || 表达式...原创 2012-02-01 12:03:26 · 1763 阅读 · 0 评论 -
Java 权限修饰符 public /protected /default /private 区别
public具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。protected主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。default有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异...原创 2012-01-08 14:15:54 · 834 阅读 · 0 评论 -
Java 线程同步 - 7种方式
为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。1.同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置...原创 2012-02-03 14:40:29 · 3401 阅读 · 0 评论 -
Java 编程规范 [Java Code Conventions]
Oracle官方Java编码规范(英文版)http://www.oracle.com/technetwork/java/codeconvtoc-136057.html 1 介绍(Introduction) 1.1 为什么要有编码规范(Why Have Code Conventions)编码规范对于程序员而言尤为首要,有以下几个原因: 一个软件的生命周期中,80%的...原创 2012-01-04 10:41:06 · 702 阅读 · 0 评论 -
Java import 作用 详解
import与package机制相关,这里先从package入手,再讲述import以及static import的作用。packageC 中的 #include会把所包含的内容在编译时添加到程序文件中,而 java 的 import 则不同。 提起package就能联想到class,那么package与class应该怎么理解? 这里我们先了解一下,每个人都有自己的名字,比如张三,欧阳...原创 2012-01-04 19:15:56 · 1291 阅读 · 0 评论 -
Java int/Integer 区别
首先Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从JDK 1.5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。原始类型 与 包装类 原始类型 boolean char...原创 2012-01-31 13:49:22 · 1692 阅读 · 0 评论 -
Java “equal” 与 “==” 区别
equal和“==”都是表示相等的意思,但是它们在进行实际的相等判定的时候,却有着非常大的区别先看看一个例子public class EqualTest{ public static void main(string[] args){ String str1 = "abcd"; String str2 = "abcd"; Strin...原创 2012-01-19 15:59:59 · 1801 阅读 · 0 评论 -
Java 通过continue/break/标签 实现 goto
goto虽然是Java中保留的keyword,但是对于跳转这个语法对新手来说这个确实好用。为了提高程序的可靠性和可读性,Java语言目前是不支持无条件跳转的goto语句!!幸亏Java中有高仿跳转的功能但是有个局限性(该方法仅限于循环嵌套跳转到外层循环的情况)首先了解一下continue、break、标签 ,都是干嘛的。 label1: for (;;) { // 外部循...原创 2012-01-31 11:26:11 · 1395 阅读 · 0 评论 -
Java IO 字节流与字符流的区别
IO流主要用于硬盘、内存、键盘等处理设备上得数据操作。 根据实现功能不同:节点流和处理流。 根据数据流的方向:输入流和输出流。 根据处理数据单位:字节流和字符流。 主要结构图 字符流和字节流的主要区别:字节流读取的时候,读到一个字节就返回一个字节。 字符流使用了字节流,读到一个或多个字节时。先去查指定的编码表,将查到的字符返回。 字节流可以处理所有...原创 2012-01-05 14:53:42 · 723 阅读 · 0 评论 -
Java 封装/继承/多态
为什么要封装、继承、多态?目的都是为了——代码重用。 封装可以隐藏实现细节,使得代码模块化。 继承可以扩展已存在的代码模块(类)。 多态可以解决项目中紧偶合的问题,提高程序的可扩展性.。封装百度词条定义 封装就是将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。// 代码理解public class Human { // private 私有成员变量外部不...原创 2012-01-05 19:04:10 · 468 阅读 · 0 评论 -
Java 创建对象的几种方式
面试题: 不通过构造函数可以创建对象吗?可以使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Student student = new Student(); 使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构...原创 2012-01-13 23:26:48 · 694 阅读 · 0 评论 -
Java 动态绑定
动态绑定:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法。动态绑定是多态性得以实现的重要因素,它通过方法表来实现:每个类被加载到虚拟机时,在方法区保存元数据,其中,包括一个叫做方法表(methodtable)的东西,表中记录了这个类定义的方法的指针,每个表项指向一个具体的方法代码。如果这个类重写了父类中的某个方法,则对应表项指向新的代码实现处。从父类继承来的方法位于子类定义的方法的...原创 2018-11-16 11:59:23 · 196 阅读 · 0 评论