java判断输入的格式化_Java的字符串及格式化输入输出
Java的字符串及格式化输入输出
1.String的不可变
在浅析Java的jvm上的内存位置的分配里已经说明,String使用了常量池技术,所以在栈中的应用要么是指向常量池,要么是指向堆,String是一个常量类,不可以被继承。
String str1=”hello”;//指向常量池
String str2=new String(”hello”);//指向堆
2.String的”+”号原理如下
String str1 = "str1" + "--str2";
// 相当于如下
StringBuilder builder = new StringBuilder();
builder.append("str1").append("--str2").toString();/*假如想进一步分析可以看汇编class文件*/
备注:String的加号的缺陷是对其进行改变等同于每次生成了一个新的 StringBuilder对象,这样就会导致无用的实例较多导致GC开始工作,影响工作效率。
public classStringDemo1 {public static voidmain(String[] args) {
String str="";
String [] fields={"1","2"};for (int i = 0; i < args.length; i++) {//每次都需要创建StringBuilder 从而降低了效率
str+=fields[i];
}
StringBuilder builder= newStringBuilder();for (int i = 0; i < args.length; i++) {//效率比上述要高,减少了每次StringBuilder的创建
builder.append(fields[i]);
}
}
}
3.string的==号
string的==号比较的是引用地址;//可以看class文件
System.out.println(new String ("abc")==new String("abc"));//false;
System.out.println(new String ("abc")=="abc");//false
System.out.println("abc"=="abc");//true
4.string的isempty
比较的是内容长度是否为0;//可以看源码
String str=null;
System.out.println(str.isEmpty());//运行时错误
System.out.println("".length());//0
System.out.println("".isEmpty());//true
5.String的equals
比较的是内容是不是相同;//可以看源码
System.out.println(new String ("abc").equals(new String("abc")));//true
6.Stringbuffer
StringBuffer线程安全的可变字符序列,主要使用的方法是append以及insert,保证线程安全主要有两种方式(暂且不论)
7.Stringbuilde线程是不安全的,主要使用的方法同stringbuffer,效率高于stringbuffer
8.格式化输出(实现国际化等)
%s 字符串 %d整数 %f 浮点型小数 %% 百分比类型 %tx日期与时间类型(x代表不同的日期与时间转换符) < 格式化前一个转换符所描述的参数 ("%f和%<3.2f", 99.45) 99.450000和99.45 $ 被格式化的参数索引 等
转换符:c包括全部日期和时间信息 F “年-月-日”格式 D “月/日/年”格式
r “HH:MM:SS PM”格式(12时制)T “HH:MM:SS”格式(24时制)
R “HH:MM”格式(24时制)等
//上述格式可以具体的区查看java.util.Formatter类
9.实例
实例1(实现国际化)
文件1:i18n_en_US.properties
name=name
age=age
文件2:i18n_zh_CN.properties
name=\u540D\u79F0
age=\u5E74\u9F84
文件3:login.txt
张三,18
李四,24
代码
ResourceBundle bundle = ResourceBundle.getBundle("i18n", Locale.US);
String name = bundle.getString("name");
String age = bundle.getString("age");
String filePath = "F:\\eclipse\\eclipse\\StringTest\\src\\login.txt";
try {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(new File(filePath));
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] infoSplit = line.split(",");
String info = String.format("%s:%s\t%s:%s", name,infoSplit[0], age,infoSplit[1]); System.out.println(info);
/*当然也可以System.out.format的方式输出,上述也可以 用 DateFormat, MessageFormat, NumberFormat去做,大同小异。*/
}
} catch (FileNotFoundException e) {
throw new Exception(filePath + "路径不存在!");
}
实例二(实现日期的格式化)
Date date = new Date();
System.out.format("%1$tF %1$tT",date);
正则
判断是否匹配给定的正则表达式用于验证matches(String regex)
System.out.println("123abc".matches("\\d+[a-zA-Z]+"));
//具体查看java.util.regex.Pattern。
替换所有的相应的字符replaceAll(String regex, String replacement)
System.out.println("i love you i love you ".replaceAll("love", "sick"));
// replaceFirst(String regex, String replacement) 替换第一个
截取需要的内容
String str= "12344567890jk1234567890111fgf123456";
Pattern compile = Pattern.compile("\\d{11,}");
Matcher matcher = compile.matcher(str);
while(matcher.find()) {
String group = matcher.group();
if(group.length()==11) {
System.out.println(group);
}
}
//matcher相应的还有start end方法,匹配开始和结束的位置,lookat从开始位置找(这也是与find的区别)等
改变类默认的输出方式
可以通过改变tostring方法来实现
java判断输入的格式化_Java的字符串及格式化输入输出相关推荐
- java判断输入回车符_Java编程:获取用户是否输入回车符
/** * 验证用户是否有输入回车键,并给出相应提示 * @param flag * @return */ import java.io.BufferedReader; import java.io. ...
- java判断输入的格式化_java安全编码指南之:输入校验 - flydean - 博客园
目录简介 在字符串标准化之后进行校验 注意不可信字符串的格式化 小心使用Runtime.exec() 正则表达式的匹配 简介 为了保证java程序的安全,任何外部用户的输入我们都认为是可能有恶意攻击意 ...
- java判断输入的字符串是否为数字
java判断输入的字符串是否为数字 1. 使用Character.isDight(),利用循环一个个字符判断 Character.isDight(char c) //如果c是数字,返回true,否则返 ...
- java 判断输入年份是否为闰年
java判断输入年份是否为闰年 一,前言 分析: 给定一个年份,判断这一年是不是闰年.当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是100的倍数: 年份是400的倍数. 其他的年份都不是闰 ...
- java 判断是否包含中文_java判断字符串中是否包含中文并过滤中文
java判断字符串中是否包含中文并过滤掉中文,具体内容如下 1.判断字符串中是否包含中文方法封装 /** * 判断字符串中是否包含中文 * @param str * 待校验字符串 * @return ...
- java 判断是否中文字符_java中判断字符串是否是中文的方法
java中判断字符串是否是中文的方法 发布时间:2020-06-25 14:07:38 来源:亿速云 阅读:79 作者:Leah 本篇文章为大家展示了java判断字符串是否为中文的方法,代码简明扼要并 ...
- java 判断是否是昨天_java判断日期是否是今天
java判断日期是不是当天:public static boolean isToday(String str, String formatStr) throws Exception{ SimpleDa ...
- java判断是否为数字(JAVA判断输入是否是数字)
java如何写一个方法判断传进来的参数是否数字 /** * class名:JudgeIfNumeral * class说明:java如何写一个方法判断传进来的参数是否数字 * @author Jr p ...
- java中输入的程序_Java中输入的用法
Java中输入 1. 读取输入 1)构建一个Scanner,附属到System.in Scanner in = new Scanner(System.in); 此时可以使用Scanner类的各种方法来 ...
最新文章
- Spring Boot 实现定时任务的 4 种方式
- RDKit:化合物亚结构(Substructure)搜索(基于Python3)
- 几十万实例线上系统的抖动问题定位
- SAP 电商云 Spartacus UI 修改 Delivery Mode 触发的三个 HTTP 请求
- AJAX+json+jquery实现预加载瀑布流布局
- 奇安信代码安全实验室帮助微软修复多个高危漏洞,获官方致谢
- List集合中数据用set集合去重复,用set集合去重复数据重写了equals还是没成功!
- vue 读取ajax数据,详解vue 中使用 AJAX获取数据的方法
- MySQL的my.cnf详细配置说明
- 沈大海38节jquery强化教程2016视频下载
- 管家婆财贸双全TOP系列服务器,管家婆财贸双全II
- 基于樽海鞘群算法的WSN节点的部署优化
- 计算机虚拟机安装教程,VMware(虚拟机)装Win7系统详细图文教程
- python量化选股策略_【机器学习】第六课:基于SVM的量化选股策略
- Flash游戏教程:控制物体运动三法
- html 验证码功能 不区分大小写进行验证。
- win7下的cmd窗口可以全屏显示吗
- cvpr2020 matlab_新zwpython 完胜 老matlab 篇二
- 微博消息分析-大数据项目
- c语言家庭财务管理算法,做好家庭财务管理,离不开这六款工具!
热门文章
- 搜索推荐系统根据用户搜索频率(热搜)排序
- WM_CTLCOLOR消息
- 记录今天学习SQL遇到的一个小问题
- vue对象深拷贝_Vue 对数据对象实现深拷贝赋值
- ubuntu安装python库_Ubuntu18.04一次性升级Python所有库的方法步骤
- python单例类命名_单例模式(java/python/c++)
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
- 用python的五种方式_Python模块重载的五种方法
- mysql开机启动脚本_centos简单的mysql开机自启和自动保存脚本
- 计算机连接网络名称,更改Windows Server Core计算机名字 以及配置网络连接