Java
学战到底
这个作者很懒,什么都没留下…
展开
-
HashTable详解
转自:Java提高篇(二五)hashtable原文出自:http://cmsblogs.com/?p=618。尊重作者的成果,转载请注明出处! 个人站点:http://cmsblogs.com 有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然转载 2016-07-10 12:51:44 · 5329 阅读 · 0 评论 -
一个例子了解Java反射机制
转自:一个例子让你了解Java反射机制Java反射机制:通俗地说,反射机制就是可以把一个类、类的成员(函数、属性),当成一个对象来操作,希望读者能理解,也就是说,类、类的成员,我们在运行的时候还可以动态地去操作他们.理论的东东太多也没用,下面我们看看实践 Demo ~package demo.reflect;import java.lang.reflect.*;public转载 2016-07-19 20:31:15 · 546 阅读 · 0 评论 -
Java的反射机制简述
反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许内部的成员进行操作。虽然这个特性在实际开发中使用的不多,但是像Pascal、C和C++等语言根本没有提供这样的特性。由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反射机制也会严重影响系统的性能。具体而言,反射机制提供的功能主要有:1、得到一个对象所属的类;2、获取原创 2016-07-19 18:56:01 · 2162 阅读 · 0 评论 -
Java反射机制Class类的用法详解
转自:Java反射机制Class类的用法详解,保存在此以学习。java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关java中Class类的相关知识!java.lang.Class是一个比较特殊的类,它用于封装被装入到JVM中的类(包括类和接口)的信息。当一个类或接口被装入的JVM时便会产生一个与之关联的ja转载 2016-07-19 18:47:32 · 1787 阅读 · 0 评论 -
JVM加载class文件的原理机制
Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器完成,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。类的加载方式分为隐式加载和显示加载原创 2016-06-19 21:30:19 · 6091 阅读 · 0 评论 -
Java的堆和栈
在Java语言中,堆和栈都是内存中存放数据的地方。变量分为基本数据类型和引用类型,基本数据类型的变量(如int、short、long、byte、float、double、boolean以及char)以及对象的引用变量,其内存都分配在栈上,变量出了作用域就会自动释放。而引用类型的变量,其内存分配在堆上或者常量池(例如字符串常量和基本数据类型常量)中,需要通过new等方式创建。具体而言,栈内存主要原创 2016-06-20 17:50:18 · 1693 阅读 · 0 评论 -
Java的不可变类
不可变类(immutable class)是指当创建了这个类的实例后,就不允许修改它的值了。也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了。它有点类似于常量(const),即只允许别的程序读,不允许别的程序进行修改。在Java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等。此外,String也是不可变类。可能有人会有疑问,既然Strin原创 2016-06-20 22:05:43 · 2260 阅读 · 1 评论 -
深入理解HashMap
转自深入理解HashMapHashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的转载 2016-06-21 11:11:51 · 808 阅读 · 0 评论 -
桥接模式和适配器模式的区别
很多时候经常容易把桥接模式和适配器模式弄混。那什么时候用桥接,什么时候用适配器呢 ?共同点桥接和适配器都是让两个东西配合工作不同点出发点不同。 1)适配器:改变已有的两个接口,让他们相容。 2)桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。 所以说,如果你拿到两个已有模块,想让转载 2016-08-05 15:15:12 · 1132 阅读 · 0 评论 -
java里的静态成员变量是放在了堆内存还是栈内存
堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈转载 2016-08-18 20:45:30 · 10112 阅读 · 1 评论 -
Java的浅复制和深度复制
假如说你想复制一个简单变量。很简单:[java] view plain copyint apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。转载 2017-11-05 22:01:02 · 785 阅读 · 0 评论 -
Java中的继承和组合
继承和组合是java中非常常用的两种创建新类型的方法,两者都能提高代码的复用率。继承主要是想让子类继承父类的基本特性;组合技术通常用于想在新类中使用现有类的功能,而非它的接口。两者的分别是"IS A"和"HAS A"的关系继承:class Shape { public void draw() { System.out.println("draw转载 2017-10-07 17:26:15 · 605 阅读 · 0 评论 -
重载overload与重写override的区别
转自:重载overload与重写override的区别重写只存在于子类与父类中,重载存在于一个类中。具体区别如下: 一、重写(override)override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载转载 2017-10-07 17:10:48 · 1431 阅读 · 0 评论 -
深入理解Java中的final关键字
Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可转载 2017-10-07 16:51:53 · 327 阅读 · 0 评论 -
Java中static关键词的作用
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见转载 2017-10-07 15:49:06 · 554 阅读 · 0 评论 -
Java中的Random类
Random类包含两个构造方法,下面依次进行介绍:1. public Random()该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。2. public Random(long seed)该构造方法可以通过制定一个种子数进行创建。示例代码:Random r = new Random();Random r1 =原创 2016-10-18 21:51:09 · 572 阅读 · 0 评论 -
Java产生随机数的几种方式
转自:Java产生随机数的几种方式,保存在此以学习,部分程序有误,重在讲解。 随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字。或者随即生成一个不定长度的数字、或者进行一个模拟的随机选择等等。Java提供了最基本的工具,可以帮助开发者来实现这一切。 一、Java随机数的产生方式 在Java中,随机数的概念从广义上将,有三种。 1、转载 2016-11-03 16:53:35 · 6230 阅读 · 0 评论 -
面向对象与面向过程
1、(函数与数据是否分离)面向过程的程序设计是采用函数来描述对数据的操作,但又将函数与其操作的数据分离开;面向对象的程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。2、面向过程程序设计方法是以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能来说具有较强的稳定性,因此更易于维护。3、面向过程的程序控制流程是由程序中设计好的顺序来原创 2016-08-21 20:50:56 · 767 阅读 · 0 评论 -
Java之transient
转自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和转载 2016-06-30 16:41:22 · 453 阅读 · 0 评论 -
排序算法之快排
快速排序是常见排序算法中速度最快的,最好的和平均时间复杂度为O(nlogn),空间复杂度为O(nlogn),是一个不稳定的排序方法。其实现过程如下:1、取出第开始的元素作为测试值,先从右侧开始遍历;2、将测试值与右侧值比较,右侧值若大于等于测试值,则继续左移再与测试值比较。若右侧遍历到测试值的下一个元素仍找不到小于测试值的元素,则证明测试值为当前序列中最小的元素,其位置不变,跳过步骤3原创 2016-07-08 12:03:08 · 559 阅读 · 0 评论 -
Java中路径\、/和\\问题
一般可以认为是"/"的作用等同于"\\"在java中路径一般用"/"windows中的路径一般用"\",或将"\"转义一下即"\\"linux、unix中的路径一般用"/"原创 2016-06-19 10:04:38 · 663 阅读 · 0 评论 -
Java之@SuppressWarnings注解
简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。使用:@SuppressWarnings(“”)@SuppressWarnings({})@SuppressWarnings(value={})转载 2016-07-14 20:30:07 · 673 阅读 · 0 评论 -
异常之Java7捕获多种类型异常
在Java7之前,每个catch块只能捕获一种类型的异常,但从Java7开始一个catch可以捕获多种类型的异常。使用一个catch块捕获多种类型的异常时需要注意如下两个地方:1>捕获多种类型的异常时,多种异常类型之间用竖线(|)隔开。2>捕获多种类型的异常时,异常变量有隐式的final修饰,因此程序不能对异常变量重新赋值。示例:public class MultiExcept原创 2016-06-17 15:26:22 · 2376 阅读 · 0 评论 -
异常之Java访问异常信息
Java程序可以通过访问catch块后的异常形参来获得异常对象的相关信息,当Java运行时决定调用某个catch块来处理该异常对象时,会将异常对象赋给catch块后的异常参数,程序即可通过该参数来获得异常的相关信息。所有异常对象都包含了如下几种常用方法:>getMessage():返回该异常的详细描述字符串。>printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。原创 2016-06-17 15:39:51 · 621 阅读 · 0 评论 -
Java之public static void main(String[] args)
public static void main(String[] args)是Java程序的入口方法,JVM在运行程序时,会首先查找main()方法。其中,public是权限修饰符,表明任何类或者对象都可以访问这个方法,static表明main()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后就可以使用该方法,不需要通过实例化对象来访问,可以直接通过类名.main()直接访原创 2016-07-14 16:51:16 · 3958 阅读 · 0 评论 -
Java与C++的异同点总结
Java与C++都是面向对象的语言,都使用了面向对象的思想(封装、继承、多态),由于面向对象由许多非常好的特性(继承、组合等),因此二者有很好的可重用性。不同点:1、Java为解释性语言,其运行过程为:程序源代码经过Java编译器编译成字节码,然后由JVM解释执行方式。而C/C++为编译型语言,源代码经过编译和链接后生成可执行的二进制代码,可直接执行。因此Java的执行速度比C/C++慢,原创 2016-07-14 15:55:20 · 18509 阅读 · 2 评论 -
JAVA平台简单介绍
Java平台是一个纯软件的平台,这个平台可以运行在一些基于硬件的平台(例如Linux、Windows等)之上。Java平台主要包含两个模块:JVM和JavaAPI(Application Program Interface,应用程序接口)。JVM是一个虚构出来的计算机,用来把java编译生成的中间代码转换为机器可以识别的编码并运行。它有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相原创 2016-06-16 20:23:36 · 1665 阅读 · 0 评论 -
知识点总结之Java语言的优点
1、Java是纯面向对象的语言。《Java编程思想》中提到Java语言是一种“Everything is object”的语言,它能够直接反映现实生活中的对象,例如车、动物等,因此通过它编写程序更容易。2、平台无关性。Java语言可以“一次编译,到处执行”。无论是在Windows平台还是在Linux、MacOS等其他平台上对Java程序进行编译,编译后的程序在其他平台上都可以运行。由于Java原创 2016-07-13 12:26:24 · 7466 阅读 · 0 评论 -
知识点:Java变量和数组的默认值
类的成员变量是基本数据类型,即使没有初始化,Java也会确保它获得一个默认值;但是基本类型的局部变量不会自动初始化,且java编译器会报错-变量没初始化。在默认情况下 ,整型数组中系统会为每一个元素赋值为0。Java不会自动把int转换成bool值所以样whille(1),if(1)都会报编译错误String[] s = new String原创 2016-07-20 00:26:58 · 774 阅读 · 0 评论 -
Java从文件中跳过n个字节读取数据
File file = new File("tcp.txt"); FileInputStream stream = new java.io.FileInputStream(file); int pos = 10;//从第几个字节开始读 int len = 15;//读几个字节 stream.skip(pos); //跳过之前的字节原创 2016-07-19 23:31:29 · 6138 阅读 · 0 评论 -
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
转自:http://blog.csdn.net/is_zhoufeng/article/details/8112199,保存在此学习。位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符转载 2016-07-09 00:47:34 · 906 阅读 · 1 评论 -
Java中HashMap的详解
转自Java中HashMap的详解,感觉收获挺多,保存在此学习。HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSe转载 2016-06-21 10:46:56 · 460 阅读 · 0 评论 -
Java中的HashMap、HashTable、TreeMap和WeakHashMap
Java为数据结构中的映射定义了一个接口java.util.Map,它包括3个实现类:HashMap、HashTable和TreeMap。 Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容索引的,而在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫做value。 HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取原创 2016-06-21 10:40:54 · 793 阅读 · 0 评论 -
Java之Scanner(二)
转自:JAVA Scanner的用法,保存在此以学习。先来看一个简单的例子:import java.util.*;public class ScannerTest { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); doub转载 2016-07-17 10:35:53 · 1554 阅读 · 0 评论 -
Java之Scanner(一)
java.util.Scanner是Java5的特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地。一、扫描控制台输入这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入转载 2016-07-17 10:25:23 · 684 阅读 · 0 评论 -
深刻理解Java编程的7个例子
转自:深刻理解Java编程的7个例子,保存在此以学习。深刻理解Java编程的7个例子 佟强 2009年11月7日 http://blog.csdn.net/microtong 1. 阅读下列代码回答问题(第一个Java程序,理解PATH和CLASSPATH,学会使用javac和java命令)package cn.edu.uibe; public class HelloW转载 2016-07-16 02:58:16 · 569 阅读 · 0 评论 -
深入理解类的加载机制及反射
转自深入理解Java:类的加载机制与反射,保存在此以学习。一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类转载 2016-07-19 18:42:05 · 2029 阅读 · 0 评论 -
Java关键字
synchronized 关键字 : 用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此原创 2016-07-19 20:51:50 · 378 阅读 · 0 评论 -
异常、堆内存溢出、OOM的几种情况
1堆内存溢出2Java异常OOM1、堆内存溢出【情况一】: java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: -Xms3062m -Xmx3062m转载 2017-11-05 22:31:41 · 730 阅读 · 1 评论