java基础知识
涡轮5
这个作者很懒,什么都没留下…
展开
-
位操作运算
无代码,不学习public class BitOperation { public static void main(String[] args) { System.out.println("=============一、位操作基础"); System.out.println("-------①位操作符的运算优先级比较低"); System.out.println(4 <原创 2013-11-10 15:49:01 · 1223 阅读 · 0 评论 -
二分法插入排序算法原理及JAVA实现
基本思想:插入排序的基本操作是在一个有序表中进行查找和插入,用折半查找实现查找步骤。复杂度:时间复杂度 O(n2) 空间复杂度O(1)JAVA源代码(成功运行):package testSortAlgorithm;public class BinaryInsertionSort { public static void main(String[] args) {原创 2012-06-13 22:09:11 · 9852 阅读 · 1 评论 -
StringBuilder、StringBuffer和String三者的联系和区别
1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。 String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。转载 2013-09-20 15:56:46 · 800 阅读 · 0 评论 -
哈希表
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树转载 2013-09-20 19:21:01 · 923 阅读 · 0 评论 -
深入分析 Java I/O 的工作机制
I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I/O 上也一直在做持续的优化,如从 1.4 开始引入了 NIO,提升了 I/O 的性能。关于 NIO 我们将在后面详细介绍。Java 的 I/O 操作类在包转载 2013-09-20 15:05:54 · 854 阅读 · 0 评论 -
Synchronized关键字
要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下:public synchronized void run() { } 从上面的代码可以看出,只要在void和public之间加上synchronized关键字,就可以使run方法同步,也就是说,对于同一个Java类的对象实例,run方法同时只能被一个线程调用,并当前的转载 2013-09-14 13:50:36 · 776 阅读 · 0 评论 -
java synchronized详解
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchron转载 2013-09-14 14:08:19 · 786 阅读 · 0 评论 -
Class.forName
Class.forName(xxx.xx.xx) 返回的是一个类首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。 至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。 A a = (A)Class.forName("p转载 2013-06-18 16:53:41 · 613 阅读 · 0 评论 -
SVN中trunk,branches,tags用法详解
Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是转载 2013-03-04 11:41:59 · 877 阅读 · 0 评论 -
java多态举例
class A { public String f(D obj) { return ("A and D"); } public String f(A obj) { return ("A and A"); }}class B extends A { public String f(B obj) { return ("B and B"); } public Stri原创 2013-02-25 13:18:52 · 1370 阅读 · 0 评论 -
简单选择排序算法原理及JAVA实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1)复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2);空间复杂度 O(1)原创 2012-06-07 09:04:51 · 2188 阅读 · 0 评论 -
java 把字符串中的反斜杠(\)替换成(\\)
在不同的系统中,路径的分隔符不同,故需要做出判断,并切换分隔符① java 把字符串中的反斜杠(\)替换成(\\)replaceAll里面用的是正则表达式,所以字符串转义一次,正则转义一次,所以一个斜扛要写4个,用replaceAll( "\\\\ ", "\\\\\\\\ ");② java 把字符串中的反斜杠(/)替换成(\)replaceAll("/",原创 2012-11-09 12:53:32 · 19480 阅读 · 4 评论 -
java 复制文件
package com;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.InputStream;import java.io.PrintWriter;public class Cop转载 2012-11-05 12:25:59 · 891 阅读 · 0 评论 -
冒泡排序算法原理及JAVA实现
冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)JAVA源代码(成功运行,需要Date原创 2012-06-07 00:37:49 · 5981 阅读 · 0 评论 -
深入探讨Java 类加载器
http://www.ibm.com/developerworks/cn/java/j-lo-classloader/类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程转载 2013-10-23 23:13:34 · 709 阅读 · 0 评论 -
forward与sendRedirect区别
SendRedirectForward不同的request不同的对象,但是可以渠道上一个页面的内容send后面的语句会继续执行,除非returnForward后面的语句不会继续发送给客户端速度慢速度快需要到客户端的往返,可以跳转到任何页面服务器内部转换地址栏有变化地址栏没有变化可以传参数,直接写原创 2012-07-17 16:38:18 · 27917 阅读 · 3 评论 -
Java反射机制模拟Spring IOC容器
ref:Java反射机制深入研究 java反射机制package reflection;import java.lang.reflect.Method;public class InvokeTest { public String add(int param1, int param2) { return param1 + " + " + param2原创 2015-12-23 16:51:32 · 1475 阅读 · 0 评论 -
JDK各版的发布时间表
Java发展的时间表。 (版本号 名称 中文名 发布日期) JDK 1.1.4 Sparkler 宝石 1997-09-12 JDK 1.1.5 Pumpkin 南瓜 1997-12-13 JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24 JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28转载 2015-12-01 16:34:12 · 5187 阅读 · 0 评论 -
快速排序算法原理及java递归实现
快速排序 对冒泡排序的一种改进,若初始记录序列按关键字有序或基本有序,蜕化为冒泡排序。使用的是递归原理,在所有同数量级O(n longn) 的排序方法中,其平均性能最好。就平均时间而言,是目前被认为最好的一种内部排序方法基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归原创 2012-06-06 21:32:59 · 24723 阅读 · 7 评论 -
Log4j基本使用方法
Log4j百度百科Log4j高级教程,根据包输出日志log4j分级别记录日志,借鉴也可以分模块记日志log4j.properties配置详解Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置原创 2012-09-26 11:42:36 · 1246 阅读 · 0 评论 -
排序算法分析(JAVA实现)
冒择入希快归堆排序算法教程讲解(数据结构学习网)A、插入排序:1、直接插入排序(百科) 直接插入排序(自己总结)2、二分法插入排序(自己总结)3、希尔排序(自己总结)B、选择排序1、简单选择排序(百科) 简单选择排序(自己总结)本质:(从上往下,从左往右比较):第一位与后面每一个比较原创 2012-05-13 11:12:52 · 1216 阅读 · 0 评论 -
Java的内存机制
参考:http://www.j2megame.org/index.php/content/view/2246/125.html1.Java的内存机制 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中转载 2013-12-04 22:04:13 · 1189 阅读 · 0 评论 -
String s=new String("abc")创建了几个对象
Stringstr=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成Stringstr、=、"abc"和new String()转载 2013-12-04 22:01:21 · 3095 阅读 · 0 评论 -
JAVA变量的种类
class MyClass { static int a; int b; public static void myMethod(int c) { try { int d; } catch (Exception e) { } } MyClass(int f) { int[] g = new int[100]; }} 根据声明方式来为变量分类转载 2013-12-05 13:20:28 · 1214 阅读 · 0 评论 -
JAVA学习笔记
第三章面向对象 1.类的成员变量会默认初始化,而局部变量不能,必须先赋值再使用。所有的引用类型(除了八种基本类型之外的变量类型),默认null。基本类型只占用一块内存;引用类型占用两块(名字,实体)。引用即为C/C++中的指针 2.类是静态的概念,存放在code seg;对象需分配的内存大小只有在运行期间(javac是编译期间,java是运行期间)才能知原创 2013-12-04 20:56:46 · 933 阅读 · 0 评论 -
面向对象三大基本特性,五大基本原则
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大基本特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,转载 2013-08-15 17:55:34 · 1215 阅读 · 0 评论 -
父类子类的静态初始化块,初始化块,构造器执行顺序
class Parent { public static String p_StaticField = "父类--静态变量"; public String p_Field = "父类--变量"; // 代码块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造函数 public Par原创 2012-07-15 22:37:33 · 4406 阅读 · 0 评论 -
JAVA GC机制
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,例如JSP,Servl转载 2013-12-03 13:39:06 · 5859 阅读 · 1 评论 -
接口与抽象类的区别
接口:定义接口的关键字:interface。实现接口的关键字:implements。 接口:是一些方法特征的集合。它定义的是一组功能(方法)规则。 作用:在不同事物(类)中抽象出共同功能点(方法),形成一组公开的功能规则(接口) 来制约某些事物(类)的功能实现。换句话说:接口就是对类的功能(方法)抽象。 特点: 1. 不能够被实例化转载 2012-11-03 23:24:49 · 611 阅读 · 0 评论 -
JAVA自动创建多层文件目录
某目录时,因为其上一层目录即父目录不存在,会抛出异常(指定文件路径不存在) jdk中提供了创建目录的两种方法实现 mkdir() 和 mkdirs() 第一种,在给定目录结构path参数下创建指定的目录, 如果path中少了一层目录没有创建,则会抛出异常(FileNotFoundException) 第二中,相对安全的实现,因为他会自动创建不存在的父级目录。 1、目录已经存在,创建原创 2012-10-20 17:45:21 · 15023 阅读 · 0 评论 -
java.lang包中Throwable子类Error和Exception的异同点
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。两个子类的实例,Error 和 Exception,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如转载 2012-06-26 13:23:43 · 3164 阅读 · 0 评论 -
Java中那些默认自动运行的方法(待续)
Runnable接口中的 run方法,HttpServlet中的doGet、doPost方法、过滤器类中的doFilter方法、JSP扩展标签方法中的doTag方法、Applet中的paint方法等等,甚至运行程序时的main方法,都会在一定时机自动调用。这些都是在哪里规定的?虚拟机?解释器?配置文件?这仅仅是一种API层面的,设计模型上涉及事件驱动结构、观察者等模式,技巧上的一种“控制反转”原创 2012-06-22 23:21:00 · 3256 阅读 · 0 评论 -
String类型
String类的说明1.String使用private finalchar value[ ]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容,String类型是不可变的(immutable).2.String类有一个特殊的创建方法,就是使用" "双引号来创建.例如new String("i am")实际创建了2个String对象,一个是"i am"转载 2012-06-22 17:16:25 · 971 阅读 · 0 评论 -
Thread的run()与start()的区别
java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。原创 2012-06-22 20:01:04 · 101237 阅读 · 24 评论 -
java命名规则
java命名规则1、类名首字母应该大写。属性(成员变量)、方法、对象变量以及所有标识符(如形式参数、实际参数、局部变量)的首字母应小写,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:类名:ThisIsAClassName 属性或方法名:thisIsMethodOrFieldName对象变量:thisIsAClassVariable转载 2012-06-05 13:16:31 · 1269 阅读 · 0 评论 -
JAVA集合类总结
Java集合类主要负责保存、盛装数据,因此集合类也称容器类。在认识collection之前,需要分清三个概念:1. collection集合,用来表示任何一种数据结构; 2. Collection集合接口,指的是java.util.Collection接口,是Set、List和Queue接口的超类接口; 3. Coll转载 2012-06-22 23:10:38 · 1250 阅读 · 0 评论 -
归并排序算法原理及JAVA实现
基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。递归形式的算法在形式上较简洁,但实用性很差。一般情况下,很少利用二路归并排序法进行内部排序。归并排序有两种实现方法:自底向上和自顶向下。本文采用分治法进行自顶向下的算法设计,形式较为简洁。分治法的三个步骤原创 2012-06-11 23:10:01 · 1512 阅读 · 0 评论 -
java中swap函数的实现分析
实践是检验真理的唯一标准,java代码:public class TestReference { public static void main(String[] args) { String b = "hi"; String a = "hello"; a = b; b = "love"; Syste原创 2012-06-10 16:26:38 · 25715 阅读 · 3 评论 -
堆排序算法原理及JAVA实现
基本思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。实例图:初始序列:46,79,56,38,40,84建堆:交换,从堆中踢出最大数剩余结点再建堆,再交换踢出最大数依次类推:最后堆中剩余的最后两个结点交换,踢出一个,排序完成。稳定性:不稳定复杂度:平均时间复杂度 nlog(n)原创 2012-06-11 00:18:17 · 4412 阅读 · 1 评论 -
break和continue区别及使用场合
一、MSDN关于break和continue语句的帮助说明1、break 语句用于终止最近的封闭循环或它所在的 switch 语句。控制传递给终止语句后面的语句(如果有的话)。2、continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代。二、break和continue语句1、break 语句在循环(for、for in,……)和switch等具有迭代选转载 2012-06-07 16:53:47 · 1183 阅读 · 0 评论