- 博客(22)
- 资源 (2)
- 收藏
- 关注
原创 equals方法和hashCode方法详解
一、初识equals()和hashCode()方法 1、首先需要明确知道的一点是:hashCode()方法和equals()方法是在Object类中就已经定义了的,所以在java中定义的任何类都会有这两个方法。原始的equals()方法用来比较两个对象的地址值,而原始的hashCode()方法用来返回其所在对象的物理地址,下面来看一下在Object中的定义:equals:pub
2009-11-09 21:06:00 6246 3
原创 String s = new String("abc");创建了几个String对象?
String s="abc";创建了几个String对象 String s = new String("abc");创建了几个String对象? 首先需要明确下面的知识点:1、引用变量与对象的区别;2、字符串文字"abc"是一个String对象; 3、文字池(pool of literal strings)和堆(heap)中的字符串对象。一、引用变量与对象A aa;这个语句声明一个
2009-11-05 21:31:00 8279 5
原创 求a的n次方的两种算法对比
一、算法一:递推相乘法示例:public class TestN{ public static void main(String args[]){ System.out.println(f(2,4)); } private static long f(int a,int n){ long result=1; for(int i=0;i result=result*a; }
2009-11-25 09:04:00 5150 1
原创 慎用++运算符,java和C++中的一个对比
一、先看下面的代码int main(){ int i=3,j,k; j=(i++)*(i++); k=(++i)*(++i); cout}在学习C++的时候我专门记过此程序的运行过程,j的结果应该是3*3=9,k的结果应该是7*7=49,i最终的值应该是7。 二、再看下面的代码public class TestPlusPlus{ public static
2009-11-24 16:11:00 1326 1
原创 三种方法实现求两个数的最大公约数
方法一/最简单的算法(效率最低),如下: public static int getMaxDivisor(int a, int b) { int max = 0; int temp = Math.min(a, b); for (int i = temp; i > 0; i--) { if (a % i == 0 && b % i == 0) {
2009-11-23 17:40:00 1807 1
转载 递归算法和非递归算法的difference和转换
递归算法和非递归算法的difference和转换递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如 hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此 ,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持 递归,这就需要把递归算法转换为非递归算法。
2009-11-23 17:39:00 921
原创 递归算法相关总结
相信大部分人都知道,递归算法具有容易理解、结构清晰等优点,但是和非递归方法相比无论是空间需求还是时间需求一般来说都更高。其原因为:递归方法在运行时需要较多次数的函数调用,如果调用层数比较深,需要增加额外的堆栈处理,造成较大的空间需求;又参数传递时需要压栈等操作,造成时间需求比较高。 问题的提出:1、递归算法有没有对递归层次的限制?2、递归算法一定比非递归算法慢吗?究竟该选
2009-11-23 17:32:00 1884
原创 别忘了写默认的构造器
先看下面的代码:class Demo{ int a;}public class TestSort{ public static void main(String args[]){ Demo d=new Demo(); }}编译此程序,不会产生任何错误提示,在看下面的代码:class Demo{ int a; Demo(int a){ this.a=a; }}public class
2009-11-21 14:04:00 968
原创 java中字符型和整型的转换问题
众所周知,java中int型和char型数据不像c语言中那样可以任意转换,即不可以将一个int型变量自动转换为char型,如下面代码中的演示:public class TestSort{ public static void main(String args[]){ int x=a;//不会产生编译错误,因为a赋给x是隐式转换 System.out.println(x); cha
2009-11-21 13:27:00 5745
原创 请注意:java中没有引用传递
说明:本文的适用对象为java初学者、如果有读者发现文章中有叙述不妥之处,请指正。今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交。有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来分析一下。一、首先来明确一下"值传递"和"引用传递的"区别值传递:是对所传递参数进行一次副本拷
2009-11-19 20:48:00 14951 24
原创 输出菱形
public class TestNULL{ public static void main(String args[]){ for(int i=1;i for(int k=1;k System.out.print(" "); } for(int j=1;j System.out.print("*"); } System.out.println(); }
2009-11-19 14:03:00 947
原创 java对数据库中NULL的处理
java中null的概念:java中,null表示类或变量是空,不代表任何对象或实例,可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。数据库中NULL的概念:数据库中,null表示未填写、未知、不可用的概念,和java不同的是数据库中可以将null赋给任何数据类型。这样一来,我们从数据库中读取字段的值后,在java程序中如何判断读取的值是否为null呢?用x==null方法吗
2009-11-18 16:46:00 7950
转载 hashmap与hashtable的区别,以及实现hashmap的同步操作
2009-07-02hashmap与hashtable的区别,以及实现hashmap的同步操作Hashtable和HashMap的区别 1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Has
2009-11-18 12:31:00 1727
原创 java实现循环左移和右移的简单算法
byte a=112,用程序实现,将其循环左移三位和右移三位。112的二进制原码:0111 0000112循环左移3位后的二进制码:1000 0011112循环右移3位后的二进制码:0000 1110 先将循环左移的程序代码告诉大家:public class TestCircle{ public static void main(String args[]){ byte
2009-11-17 21:08:00 16051 4
原创 判断String是否为空的注意事项
首先需要注意一点,笔者在这里不将"s==nul"l的情况视为"s是空字符串"。 一,初学者容易出现的错误 1、用if(s==""){}判断s是否为空。这种方式是最低级的错误同时也是最隐蔽的错误,说它低级是因为这样构造语句的程序员对String了解甚少,说它隐蔽是因为这条语句不仅不会发生编译错误而且很多新手还会认为这样判断完全正确,殊不知存在严重的bug。先看下面的示例:示
2009-11-16 21:50:00 13253 2
原创 作为函数参数时String和String[]数组的区别
首先、我们必须牢记的一点是:java语言规范规定,String型变量指向的内存空间中的内容是不能被改变的,即String是不可改变的类!示例一:public class TestConstant{ public static void main(String args[]){ String str=new String("hello");
2009-11-16 09:54:00 10432 2
原创 静态(static)方法的继承和重写
静态方法大家应该都比较熟悉,在这里主要谈一下静态方法在继承时的一些注意事项。 1、父类方法如果是静态方法,子类不能覆盖为非静态方法;2、父类方法如果是非静态方法,子类不能覆盖为静态方法;3、父类静态方法可以被覆盖,允许在子类中定义同名的静态方法,但是没有多态。下面对第3条特性进行一下代码演示:class Demo{ public static void display()
2009-11-12 20:50:00 9987
原创 static{}语句块详解
声明:转载请注明出处static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用。 一、在程序的一次执行过程中,static{}语句块中的内容只被执行一次,看下面的示例:示例一class Test{ public static int X=100; publi
2009-11-12 14:27:00 25440 9
原创 在TreeSet中实现存储自定义对象
在TreeSet中实现存储自定义对象 一、先来看一下TreeSet的继承结构和类声明形式继承结构:java.lang.Object |_ java.util.AbstractCollection |_ java.util.AbstractSet |_ java.util.TreeSet 类声明:public class
2009-11-10 20:37:00 5634 1
转载 java堆栈
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Jav
2009-11-08 22:07:00 1244
原创 java中String s=”abc“及String s=new String("abc")详解
本博客内容由网上搜集而来,作者加以修改整理而成 首先,我们先来看一下java中变量的语义:java的变量有两种语义,原始类型的变量是值语义(value),也就是说,你给一个原始类型变量赋值,就改变了这个数据值本身。对象类型的变量是引用语义,也就是说,给一个对象类型的变量赋值只是让它指向另一个对象,但不改变原来引用的那个对象的值。 然后,我们了解一下String的特性以及java对于
2009-11-06 12:45:00 8711 2
转载 JAVA中String与StringBuffer 、StringBuilder的区别
JAVA中String与StringBuffer 、StringBuilder的区别一、String和StringBuffer的区别在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。 Str
2009-11-05 22:04:00 1180
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人