Java 经典实例摘记 前5章 字符串和数字

个人总结的《Java经典实例》中没注意到的地方,每一个点以问题或要求为标题,后跟书中相关联的对应章节

获得环境变量(2.1)

使用System.getenv()可获得全部环境变量,使用System.getenv("PATH")传入各种值可获得对应变量

这个方法在JDK1.1之后被废弃,在JDK1.5之后重新启用

获取系统属性

使用System.getProperties()或者System.getProperty("")获得系统属性

可以使用System.getProperties().list(System.out)将结果输出出来

Java平台无关的文件名分隔符和路径分隔符(2.4)


  • 系统文件名分隔符(String):separator(例如:)
  • 系统文件名分隔符(char):separatorChar
  • 系统路径分隔符(String):pathSeparator(例如:;)
  • 系统路径分隔符(char):pathSeparatorChar

Unix、Windows各平台上述分隔符并不相同
路径分隔符Unix下是 :,Windows是 ;,Windows把 :当作驱动器号的分隔符;文件分隔符Unix下是 /,Windows下是 \,Windows把 /当作了选项分隔符,而选项分隔符在Unix下是 -

分割用固定字符分隔的字符串(3.2)

使用StringTokenizer类,实现了迭代器和枚举接口
StringTokenizer对象有方法hasMoreToken()nextToken()
构建StringTokenizer需要待待分割的字符串和指定的分割符,指定的分隔符可以是多个,例如:

StringTokenizer st=new StringTokenizer("The String wait for headle",",|");//分隔符是‘,’和‘|’

正则表达式相关(4.5附近)

整体流程简记:

Pattern pattern=Pattern.compile("regexString",CASE_INSENSITIVE|MUTILINE);//第二个参数可以指定选项
Matcher matcher=pattern.matcher(InputString);
if(matcher.find()){
    System.out.println(matcher.group(0));
    System.out.println(matcher.start());
    //some methods
    matcher.replaceAll(newString);
    matcher.appendReplacement(StringBulider sb,newString);
    matcher.appendTail(StringBuilder sb);
}

浮点数的比较

计算机无法精确表示0.1及它的任意次方,所以浮点数比较和整数不一样,基本类型无法正确比较,要依靠Float和Double,使用其中的equal()方法

数字的格式化(5.8)

使用text包下的NumberFormat对象
调用NumberFormat的getInstance方法会的到一个DecimalFormat实例,对实例调用
setMinimumIntegerDigits(int)
setMaximumIntegerDigits(int)
方法可以设置显示的数字的 整数 部分的最大宽度和最小宽度,调用
setMinimumFractionDigits(int)
setMaximumFractionDigits(int)
方法可以设置显示的数字的 小数 部分的最大宽度和最小宽度
该类默认是按照系统的Locale设置的显示钱币和数字的方式,当然可以通过getInstance传入一个Locale自定义
此外,还可以直接new 一个DecimalFormat,设置各个属性,尤其,可以在构造函数中传入一个字符串,控制显示格式
类似于new DecimalFormat("###.00000##");
此外,NumberFormat类还有静态方法getCurrencyInstancegetIntegerInstancegetPercentInstance分别得到货币、数字、百分数的DecamalFormat。

附一张网上找到的参数表格:

符号位置本地化?含义
0数字阿拉伯数字
#数字字阿拉伯数字,如果不存在则显示为空
.数字是 小数分隔符或货币小数分隔符
-数字减号
,数字分组分隔符
E数字分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
;子模式边界分隔正数和负数子模式
%前缀或后缀乘以 100 并显示为百分数
/u2030前缀或后缀乘以 1000 并显示为千分数
¤(/u00A4)前缀或后缀货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。
前缀或后缀用于在前缀或或后缀中为特殊字符加引号,例如 “’#’#” 将 123 格式化为 “#123”。要创建单引号本身,请连续使用两个单引号:”# o”clock”。

处理不连续的整数序列(5.10)

使用BitSet,使用Bit,节省空间

处理的特别大的数字(5.19)

使用BigInteger和BigDecimal类,通过构造函数传入大数的字符串,构造不可变的大数对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值