主要指的是集合类(List,Map,Set等),我们创建一个常量集合或传递一个常量集合作为参数,往往都会这么做(以Set为例):
1
2
3
4
5
6
|
Set<String> validCodes = new HashSet<String>();
validCodes.add( "XZ13s" );
validCodes.add( "AB21/X" );
validCodes.add( "YYLEX" );
validCodes.add( "AR2D" );
removeProductsWithCodeIn(validCodes);
|
1
2
3
4
5
6
7
|
private
static final Set<String> VALID_CODES = new HashSet<String>();
static {
validCodes.add( "XZ13s" );
validCodes.add( "AB21/X" );
validCodes.add( "YYLEX" );
validCodes.add( "AR2D" );
}
|
1
|
会不会觉得每次都这样很费时费力,其实,有更好的办法,那就是双括号语法,像下面这样:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private
static final Set<String> VALID_CODES = new HashSet<String>() {{
add( "XZ13s" );
add( "AB21/X" );
add( "YYLEX" );
add( "AR2D" );
}};
removeProductsWithCodeIn( new HashSet<String>(){{
add( "XZ13s" );
add( "AB21/X" );
add( "YYLEX" );
add( "AR5E" );
}});
|
这里解释下这两个括号:第一个括号创建了一个新的匿名内部类,相信这个大家都知道;第二个括号声明了匿名内部类实例化时运行的实例初始化块。
使用双括号语法需要注意两点:
1. 如果要在匿名内部类中要建立匿名子类,那么只能用于非final的类,这很明显,且不仅局限于集合类,可以用来实例化任何对象,例如用于GUI对象,如下:
1
2
3
4
5
6
|
add( new JPanel() {{
setLayout(...);
setBorder(...);
add( new JLabel(...));
add( new JSpinner(...));
}});
|
1
|
2 . 这种语法与常用的equals( Object o)方法不兼容。例如Example类有这样的方法:
|
1
2
3
4
5
6
7
8
9
10
|
public
boolean equals( final Object o) {
if (o == null ) {
return false ;
} else if (!getClass().equals(o.getClass())) {
return false ;
} else {
Example other = (Example) o;
}
}
|
那么,使用双括号初始化语法创建的任何对象都不会与未使用双括号语法创建的对象相等。因此,建议大家:如果类中需要equals(Object o)方法,那就老老实实不要使用这种语法了。不过集合类没有这种问题,应该是因为集合内部优化了的原因。
那么什么时候建议大家使用双括号语法呢?
如果你只是要创建并初始化一个实例而不是创建一个新类,或者创建任何不添加字段属性或重载方法的匿名类时,用双括号语法就很nice了。
3. 如果你用的是集合类且该类有构造器参数接受另一个集合生成该集合的实例,那么有个更好的更惯用的替代方法,如大家都知道的List初始化可以用Arrays.asList(),如下:
1
|
List<String> myList = new ArrayList<String>(Arrays.asList( "One" , "Two" , "Three" ));
|
1
|
<strong>但需要注意:asList返回的是一个长度不可变的列表。数组是多长,转换成的列表是多长,
ava保留两位小数问题:
方式一:
四舍五入
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
---------------------------------------------------------------
方式二:
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的数字);
例:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
方式三:
double d = 3.1415926;
String result = String .format("%.2f");
%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型
方式四:
NumberFormat ddf1=NumberFormat.getNumberInstance() ;
void setMaximumFractionDigits(int digits)
digits 显示的数字位数
为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的
import java.text.* ;
import java.math.* ;
class TT
{
public static void main(String args[])
{ double x=23.5455;
NumberFormat ddf1=NumberFormat.getNumberInstance() ;
ddf1.setMaximumFractionDigits(2);
String s= ddf1.format(x) ;
System.out.print(s);
}
}
格式化时间
new Date(String str).format("Y-m-d") 2013-01-24
floor :返回小于它的最大整数
round :4舍5入的计算
ceil :返回大于它的最小整数
Calendar的使用
获取星期
Calendar now =Calendar.getInstance();
now.setTime(new Date());
now.set(Calendar.DATE,now.get(Calendar.DATE));
int day = now.get(Calendar.DAY_OF_WEEK);
获取多少天后的时间
Calendar now =Calendar.getInstance();
now.setTime(new Date());
now.set(Calendar.DATE,now.get(Calendar.DATE)+amount);
Date date = now.getTime();
在eclipse中配置jvm(提高环境配置的迁移性)
在eclipse.ini文件第一行(注意一定要插入到第一行)
-vm
D:\javaEvn\JDK6\jre\bin\javaw.exe
|
分享到:
相关推荐
一.java基础部分 二.算法与编程 三.html&JavaScript&ajax部分 四.Java web部分 五.数据库部分 六.XML部分 七.流行的框架与新技术 八.软件工程与设计模式 九.j2ee部分 十.EJB部分 十—. webservice 部分 十二.其他
网上找到的一个Java面试的心得总结,里面涉及了许多Java基础的东西,总体来说比较全,适合在面试前过一遍来查缺补漏。非本人整理,如果有侵权,可以联系我撤除资源。
超全乎 即便不面试,也可以巩固一下基础知识 超赞
Java基础篇——第一章至十六章包括从Java环境控制结构到图形界面原件。多媒体等丰富内容的详细讲述。 Java进阶篇——第十七章sgl程序设计说明Java如何管理数据库:第十八章Servlet程序设计,说明Java如何在互联网...
李兴华老师Java基础笔记,里面的资源比较齐全,希望对大家有帮助!
java面试中常问到的问题,包括: 1 Java基础 2 算法 3 javascript/AJAX 4 Java Web 5 数据库 6 MXL 7 框架,设计模式,webservice等
2013.2.13.java基础试卷A及答案.docx
Java面试宝典pdf,面试必备,学习Java重点,回顾基础知识。
2013 最新Java 面试题 ,包括java基础、开发、框架、hibernate、spring、struts等...
实习报告 一、实习时间 2013.01.08--2013.05.18 二、实习地点 无锡 NIIT 软件服务外包实训基地 三、实习目的 进一步了解 Java 开发的相关知识, 掌握 Java... 五、实习内容 5.1 java基础知识 Java 的基础知识对于一个 ja
2013年最新java面试宝典,内部涵盖java基础、数据库技术、模拟面试等内容
java网络编程复习题(2Java网络编程基础复习题013模拟测验库)
01第一讲:Java基础方面陷阱 02第二讲:Java客户端方面陷阱 03第三讲:Java服务器端方面陷阱 04第四讲:程序员面试技巧 05第五讲:Java程序员常见笔试题分析 06第六讲:Java程序员常见笔试题分析(续) day64(2013.4...
目前支持基础数据类型int、long、foloat、double、const char *、bool的转换,也支持将数组装换为JAVA中的ArrayList。目前有个难点是将枚举类型直接转换为JAVA中的枚举,这个目前还搞不定,如果有朋友知道怎么搞,...
地理信息系统算法基础上机题目(java实现). 一、已知一线段AB,在某个方向选择一点P,输入距离d,求线段AB延长距离d后的点坐标; 2 二、判断两线段是否相交; 4 三、多边形重心计算; 7 四、编程实现八方向矢量线...
主要是一些常用的java基础复习知识,包括2013年部分互联网公司的笔试题,适合找工作的同学看看
这是最新版本的java面试宝典PDF版本的文档,里面囊括了Java程序设计,WEB技术,XML技术,数据库,当下流行框架等有关java的方方面面,并且在原来的基础上进行了修正,改掉了以前的别字,还有以前版本中问题回答错误...