JAVA将字符串变为输入流

关于字符串转化为输入流,我找到2种方法:
1. 用StringReader将字符串转化为Reader
2. 用ByteArrayInputStream将字符串转化为InputStream. 还有一个类StringBufferInputStream也可以将String转化为InputStream,但是由于它只支持字符串中每个字符的低八位,所以已经被遗弃了。
PS: java.io.Reader 和 java.io.InputStream 组成了 Java 输入类。Reader 用于读入16位字符,也就是 Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。

示例代码如下:

 

转自:http://zben000.javaeye.com/blog/787562

Spring upload form optional with optional file

机械键盘推荐>>

We are creating a profile page with a form that optionally has a profile pic on it. We are using Spring 3.2

Here is the form: –

Here is the controller method: –

Here is the Model

It works fine if a file is submitted on the form, but there are errors in the BindingResult variable if the form is submitted without a file.

Here is the error: –

======================
 

It turns out it was the jQuery Form plugin which was sending an empty string instead of what spring expects – nothing to be sent.

I solved the problem using a before submit to remove the fileData value if it wasn’t populated like so: –

I hope this helps some googlers with the same problem.

来自:http://stackoverflow.com/questions/14771446/spring-upload-form-optional-with-optional-file

Java的setScale与Javascript的toFixed

Javascript的toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
语法:NumberObject.toFixed(num)
参数:   num    必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0  和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

在Server端(Java)可使用BigDecimal的setScale实现相同的功能

setScale(2, BigDecimal.ROUND_HALF_UP);

其中,2为精确度,即保留几位小数;BigDecimal.ROUND_HALF_UP为舍入模式;

枚举常量摘要

  • CEILING  向正无限大方向舍入的舍入模式。
  • DOWN     向零方向舍入的舍入模式。
  • FLOOR    向负无限大方向舍入的舍入模式。
  • HALF_DOWN   向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
  • HALF_EVEN    向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
  • HALF_UP    向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
  • UNNECESSARY  用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
  • UP  远离零方向舍入的舍入模式。

 

如果需要格式化数字,可使用new DecimalFormat(“格式”);

符号    意义
0          一个数位
#          一个数位,前导零和追尾零不显示
.           小数点分割位置
,        组分隔符的位置
–           负数前缀
%        用100乘,并显示百分号

 

摘于:
http://www.w3school.com.cn/js/jsref_tofixed.asp
http://stackoverflow.com/questions/10631813/javascript-tofixed-equivalent-in-java
http://volzengwen.blog.163.com/blog/static/1968163262011102405939123/

关于JAVA中变量的初始化及类属性的默认值问题

转自:http://hi.baidu.com/yioopayczwgnsye/item/e28120f4ae4a3eee1b111fa9

先看两个例子:
1.VariableInitialization.java

利用JAVAC编译后提示:Variable x may not be initialized.显示在第四行中用到的x可能未被初始化,不可参与运算。

2.ClassAttribute.java

运行结果为:
半径为:0
面积为:0.0
非但没有报错,还给出了可用的运行结果。Circle类中的radius并没有赋初值,但却可以正常使用,而例1里main()方法中的x未赋初值却被告有错。其实问题就在这里,在JAVA中:Local variables must be initialized before they can be used.
而在类定义中的属性若不赋予初值,则JAVA会自动赋予这个属性一个默认值,以下为类的属性的默认值表:

  • 数据类型                        默认值
  • boolean                         false
  • char                           ‘/u0000′(null)
  • 整形(byte,short,int,long)      0
  • 浮点型(float, double)         +0.0f或+0.0d
  • 参考型                           null

总结为一句话便是类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则JAVA会按上表为其添加默认值;方法里定义的数据成员称为变量,变量在参与运算之前必须赋初值。
1.一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值;
2.如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他初始化,否则将得到编译错误的提示;