- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 浅谈Date和Calendar类
在Java平台首次发布时,唯一支持日历计算类的就是Date类;在Java1.1版中,Calendar类被添加到Java平台中,以矫正Date的缺点,由此大部分的Date方法就被弃用了。可惜的是,这样做很糟糕。 比如: 1:Date将一月份表示为0,而Calendar延续了这个错误。因此下面的代码会输出2000: ...
2014-03-31 16:07:11 110
原创 Arrays的工具函数和Integer的内置方法简述
Java代码 public static void sort(long[] a) 这个方法会将一个long类型数组进行排序,java原码中有说明,这个排序是用快速排序算法实现的。 示例代码 Java代码 long[] a={1,3,2,4,6,8,...
2014-03-31 15:03:38 153
原创 Arrays.deepToString的使用
上代码先:String array[][]={{"hello","haha"},{"nishi","nihao"},{"woshi","wohao"}}; System.out.println(Arrays.toString(array)); System.out.println(Arrays.deepToString(array)); 看看结果:
2014-03-31 14:48:35 309
原创 Java的BigDecimal
BigDecimal类 双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。表5.7中列出了BigDecimal类的主要构造器和方法。 BigDecimal类的主要构造器和方法 构 造 ...
2014-03-28 10:26:05 168
原创 Java中的BigInteger
首先从终端读入时可以读入BigInteger如: 读入: Scanner cin = new Scanner (System.in); while(cin.hasNext())//等价于!=EOF n=cin.nextInt();//读入一个int型的数 n=cin.nextBigInteger();//读入...
2014-03-28 10:23:42 128
原创 Java的一条语言规范
JLS14.4:不允许一个本地变量声明语句做为一条语句在for,while,或do循环中重复执行。像下面的是不合法的: for(int i=0;i<10;i++) int j=i; 除非加上大括号,才会变合法: for(int i=0;i<10;i++) ...
2014-03-27 17:13:50 128
原创 不要在构造器中调用可覆写的方法
首先看一下下面的程序,猜猜会输出什么:class Point{ Point(){ show(); } void show(){ System.out.println("Father."); }}class ColorPoint extends Point{ void show(){ Syst...
2014-03-27 11:30:46 313
原创 静态变量的初始化顺序与问题
先看一个代码,猜猜看会输出什么:public class Elvis{ public static final Elvis INSTANCE=new Elvis(); private static final int CURRENT_YEAR=Calendar.getInstance().get(Calendar.YEAR); private final int...
2014-03-25 18:57:49 152
原创 MySQL建表
首先建一张表:但是发现忘记设置主键了,不过没有关系,接着: 接下来想添加一列: 再接下来想删除掉这个新添加的列: 你删除的时候会提示你,有默认约束依赖该字段,那么你需要先删除默认约束(错误提示里会有默认约束名),再删除字段:ALTER TABLE 表名 DROP CONSTRAINT 默认约束名ALTER ...
2014-03-24 16:40:10 166
原创 函数参数中的数组和指向数组的指针
大家在向函数中传递数组的时候,一般有两种方式形参模式。 1:传递数组:例如函数定义为:void fun(int array[100]) 则可以这样传递实参:int array[100]={0}; ...
2014-03-24 15:02:29 142
原创 删除重复数据
看个实际例子:将表test中的userName重复的记录删掉: 上面的例子不太全面有bug,因为如果userName相同但是height不同的话会被误删。所以应该这样: ********************************************************************************************mysql...
2014-03-21 16:11:58 135
原创 Java是值传递还是引用传递的分析
先看一下代码,猜猜下面的程序会输出什么?package com.wjy.test;public class Batman extends Father{ private int index; public Batman(int index){ this.index=index; } private static void chan...
2014-03-21 14:31:51 92
原创 根据先序和中序重建二叉树并输出后序(不完美版)
存在的问题:若根据先序遍历结果和中序遍历结果无法重建二叉树应该输出NO。但是它还做不到。代码如下:#include <stdio.h>#include<iostream>using namespace std;typedef struct ListNode{ int value; struct ListNode* pLef...
2014-03-20 16:48:47 111
原创 类方法和实例方法
今天看到一道题说实例方法可以直接调用什么? 题目如下: 为了解答这道题:写个程序看一下:package com.wjy.test;public class Father { public static void publicStaticMethod(){ System.out.println("yes"); } pr...
2014-03-20 10:29:03 169
原创 关于Iterator重新回到起点的办法
说实话,没找到。重新赋值一次就行了。可能不太好。例子如下:List<String> list=new ArrayList<String>(); Iterator<String> iterator; list.add("hello"); list.add("world"); list.add("hahaha"); ..
2014-03-19 19:49:56 4171
原创 递归实现倒序打印数组元素
要想倒序打印,第一个想到的就是使用栈实现:将元素按照顺序都压入栈中,依次弹出并打印就实现了倒序打印。 大家想一想,其实递归就是天生的栈结构。所以,使用递归来实现数组的倒序输出,虽然效率可能不太好。 代码1...
2014-03-19 09:40:36 1174
原创 说个以前不知道的事情
1.看下面代码是合法的吗?public class Complex{ private Complex instance=new Complex(2); public Complex(int i){ System.out.println(i); } public static void main(String args[]){ Complex...
2014-03-17 15:02:49 138
原创 4-1合并数组
#include <stdio.h>#include<iostream>#define MAX_LENGTH 100using namespace std;char* mergeArray(char* arrayA,char* arrayB,int m,int n){ int i=0; char temp; char* arrayATa...
2014-03-17 14:15:35 81
原创 JVM对final变量赋值的限制
对于final变量的赋值,JVM对其是有限制的。为了保证安全性只允许其被赋值一次。例如下面的程序就是不合法的:虽然程序本身可能没有什么错误,但是Java的编译器认为这样是不安全的。解决办法有很多,下面给个不错的解决办法:如上所示,不仅解决了问题(final只被赋值了一次),还增加了程序的可读性。 ************************************...
2014-03-14 10:37:04 335
原创 optionally enclosed by
我试了一下optionally enclosed by '"'左边没引号右边有引号:成功,原样导入111"222""333"""左边有引号右边没引号:失败, second enclosure string not present"44""555"""666左右有相等的奇数个引号,成功,引号数=2n+1时导入数据带有n个引号"777"""&q
2014-03-13 17:10:29 5510
原创 虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载,连接和初始化过程都是在程序运行期间完成的。...
2014-03-13 17:06:18 85
原创 将csv文件导入/导出mySQL
最近有一个很大的csv文件,想导入到mySQL统一进行处理。csv的结构如下图所示: 现在需要新建一个表: 对应csv文件中的记录。最后开始导入到mySQL中: by '\r\n' 或者写成by '\n'都是可以的。 看看导入后的效果: 我把这个alibaba.csv也传上来,存在附件中。 ***************...
2014-03-13 17:06:04 396
原创 (转)Java之内存分析和String对象
Java之内存分析和String对象 Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 堆(heap):存放所有new出来的对象。 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量...
2014-03-12 15:17:10 77
原创 Java中的运行时常量池
运行时常量池(Runtime Constant Pool)是方法区的一部分。class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池(Constant Pool Table)用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存储到方法区的运行时常量池中。 Java语言并不要求常量一定只有在编译期才能产生,并非预置如Cl...
2014-03-12 15:08:49 112
原创 判断对象是否存活的算法
许多教科书来判断对象师傅偶存活的算法是这样的:给对象添加一个引用计数器,每当有一个地方引用它时,计数器的值就加1;当引用失效时,计数器的值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 上面这个算法叫做“引用计数算法”,实现简单,判定效率高昂,但是无法解决对象之间相互循环引用的问题。例如: MyClass refere...
2014-03-12 11:15:36 157
原创 浅谈System.gc()垃圾收集
1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。 垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,...
2014-03-12 10:42:45 112
原创 运行时数据区域
程序计数器:由于Java虚拟机的多线程是通过程序轮流切换并分配处理机执行时间的方式来实现的。同一时间,一个处理器智能执行一条线程中的命令。因此,为了线程切换后能恢复到正确的执行位置,每条线成都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。这个内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemory...
2014-03-12 09:46:31 71
原创 解析字符串算式
题目:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。2. 若输入算式格式错误,输出结果为“0”。要求实现函数:void arithmetic(const char *pInputStr...
2014-03-11 21:12:38 617
原创 字符串压缩
题目描述: 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x...
2014-03-11 19:21:05 174
原创 去掉字符串中的重复字符
题目: 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); ...
2014-03-11 15:38:28 852
原创 Java实现进制之间的转换
@ sourceNum:10进制的源数字@ baseNum: 目的进制package com.wjy.algorithm;import java.util.Stack;public class SystemTransform { private int sourceNum; private int baseNum; public SystemTransf...
2014-03-11 09:45:21 111
原创 大整数乘法
在计算机中,长整型(long int)变量的范围是 -2147483648 至 2147483647,因此若用长整型变量做乘法运算,乘积最多不能超过 10位数。即便用双精度型(double)变量,也仅能保证 16 位有效数字的精度。在某些需要更高精度的乘法运算的场合,需要用别的办法来实现乘法运算。 比较容易想到的是做多位数乘法时列竖式进行计算的方法,只要写出...
2014-03-10 17:12:28 102
原创 大整数减法
#include "StdAfx.h"#include "subStr.h"#include<iostream>using namespace std;#define MAX_LENTH 201void sub(int len,int *bigNumA,int *bigNumB){//以下为执行逐位相减;tag记录进位 int i,tag=0...
2014-03-10 16:08:32 76
原创 大整数加法
#include "StdAfx.h"#include "subStr.h"#include<iostream>using namespace std;#define MAX_LENTH 201void add(int len,int *bigNumA,int *bigNumB){//以下为执行加法累加,逐位相加;tag记录进位 int i...
2014-03-10 15:02:11 94
原创 Java移位操作
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次...
2014-03-10 09:25:35 119
原创 C和Java基本数据类型的不同
1、与C语言不同,JAVA里没有无符号(unsigned)整型。JAVA的8种基本类型(boolean,byte,short,char,int,long,float,double)都是有符号的。2、与C语言不同,JAVA里的char类型,占2个字节,专为存放Unicode字符所设计;3、与C语言不同,JAVA里的boolean只能赋值为true或false,不能直接赋值0或1;...
2014-03-10 08:36:44 1433
原创 C语言数组初始化全部为0
例如: int a[15] = {0};第一种,编译器会把第一个初始化值赋给数组的第一个元素,然后用0赋给其余的元素。如果没有给出初始值,编译器不会去做初始化工作。这样简洁的方式让代码更加高效。 还有一种,就是memcpy函数的使用。例如上面的数组,可以memcpy(a,0,15);不过个人在嵌入式的环境下使用,个人建议用第一种,因为感觉使用函数会大费周章,而且这个函数用得不...
2014-03-07 17:13:35 11411
原创 指针数组探究
1.首先定义一个指针数组,存储int型的指针元素。 int * parray[3]; 赋值给该数组: int a=1,b=3,c=5; parray[0]=&a; ...
2014-03-06 11:10:32 74
原创 printf函数的一个问题
看看如下代码,猜猜会打印出什么? int i=1; printf("%d %d\n",i++,i++); 输出结果竟然是: 2 1是不是感到很奇怪?原因:printf是最右侧的元素先入栈,所以右边的i++中的i先入站占4个字节此时入栈元素为0x00000001,接下来左边的这个i++中的i入栈,此时i已经变...
2014-03-05 10:21:10 115
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人