/**
* 字符串与包装类
*/
package com.org.lxh;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Administrator
*
*/
public class Chp8 {
/*
* 验证电话号码
*/
public static String checkPhoneNumber(String text){
if(text == null || text.isEmpty()){
return "error";
}
//定义正则表达式
String regex = "^\\d{3}-?\\d{8}\\d{4}-?\\d{8}$";
if(text.matches(regex))
return "电话号码";
else
return "不是的";
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//1、语句 "3+5="+3+5 输出什么?
System.out.println("3+5="+3+5);
//2、String str = null; 与 String str=""; 的区别是什么?
/*
* 前一句没有分配内存,后一句创建了一个长度为0的空字符串。并在内存中为其分配了内存空间。
*
*/
//3、String类是否可以被继承?
/*
* 不可以
*
*/
//4、字符串大小写的转换?
/*
*
*
*/
String str = "Long long ago, There's girl,She's name little REDHAT!";
String str2 = str.toUpperCase();
String str3 = str.toLowerCase();
System.out.println(str + "\n" + str2 + "\n" + str3);
//5、字符串的反向输出?
/*
*
*
*
*/
//6、== 运算符与equals()比较对象的区别是什么?
/*
* 当使用运算符 “==” 比较两个对象时,是比较两个对象使用的内存地址和内容是否相同,如果两个对象使用的是同一个地址,
* 并且内容相同,则结果为true,否则结果为false。
*
* 当使用equals()比较两个对象时,则是比较两个对象的内容是否相同,而与对象的内存地址无关。
*
*/
String str11 = new String("hello");
String str22 = new String("hello");
String str33 = str22;
//str22与str33同一个内存地址
String str44 = "hello";
//使用 == 比较str11和str22
System.out.println("str1 == str2 比较的结果为: \t" + (str11 == str22));
//false
//使用 == 比较str22和str33
System.out.println("str22 == str33 比较的结果为:\t" + (str22 == str33));
//true
//
System.out.println("str22 == str44 的比较结果为:\t" + (str22 == str44));
//false
//使用equals比较str11和str22
System.out.println("str11.equals(str22)的结果为:\t" + str11.equals(str22));
//true
//使用equals比较str22和str33
System.out.println("str22.equals(str33)的结果为:\t" + str22.equals(str33));
//true
//7、判断字符串是否为空的方式?
/*
*
*
*
*/
String val = null;
if(val == null)
System.out.println("String val is null");
val = "";
if(val.equals(""))
System.out.println("String val is equals \"\"");
if(val.length() == 0)
System.out.println("String val's length is zero");
//8、如何实现你对日期的格式化?
/*
*
* JDK1.5开始,String类的format()方法可以格式化日期变量
*
* %td 一个月的第几天
* %te 一个月的第几天
* %tm 月份
* %ty 年份
* %tY 4位年份
* %tj 一年中的第几天
* %ta %tA 星期
* %tb %tB 月份
*
*/
Date date = new Date();
System.out.println("默认日期格式:" + date);
System.out.println("一个月的哪一天: " + String.format("%te", date));
System.out.println("星期全称: " + String.format("%tA", date));
//9、时间变量格式化
/*
* %tH 两位24小时制的小时
* %tI 两位12小时的小时
* %tk
* %tl
* %tM 分钟
* %tS 秒
* %tL 毫秒
* %tN 毫微秒
* %tp am,pm
* %tZ 时区
* %ts 自1970-01-01 00:00:00到现在经过的秒数
* %tQ 毫秒数
*
*/
System.out.println("24小时制的小时: " + String.format("%tk", date));
System.out.println("时区: " + String.format("%tZ", date));
//10、日期与时间的组合格式化
/*
* %tR
* %tT
* %tr
* %tD =%tm%td%ty 02/28/2012
* %tF ISO 8601格式的日期
* %tc
*/
System.out.println("24小时的时间: " + String.format("%tR", date));
System.out.println("24小时的时间: " + String.format("%tT", date));
System.out.println("12小时制的时间: " + String.format("%tr", date));
System.out.println("英文写法的日期: " + String.format("%tD", date));
System.out.println("ISO 8601日期的格式: " + String.format("%tF", date));
System.out.println(">>: " + String.format("%tc", date));
//11、常规数据类型的格式化?
/*
* 类似C语言
*
* %b %B 布尔类型
* %c %C 字符串
* %s %S
* %d %o %x %X
* %e %E
* %% %符号
*/
System.out.println("浮点数: " + String.format("%E", 128000.56f));
System.out.println("浮点数: " + String.format("%e", 128000.56f));
System.out.println("整数: " + String.format("%d", 7756));
System.out.println("八进制整数: " + String.format("%o", 7756));
System.out.println("十六进制整数: " + String.format("%x", 7756));
System.out.println("十六进制整数: " + String.format("%X", 7756));
//12、正则表达式
/*
* String类的matches()方法
*
*/
String num = "0431-3385926";
System.out.println(num + " " + checkPhoneNumber(num));
//验证IP地址, 下面使用正则表达式
/*
* [abc] 表示a、b和c
* [^abc] 表示a、b和c除外
* [a-zA-Z] 字符集
* [a-d[m-p]] a-d或m-p
* [a-z&&[def]] d e f
* [a-z&&[^bc]] a-z中排除b c
* [a-z&&[^m-p]]
*/
Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher matcher = pattern.matcher("127.400.600.2");
//以验证127.400.600.2为例
System.out.println(matcher.matches());
System.out.println("=================================================================");
//日期
Pattern pattern1 = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
Matcher matcher1 = pattern1.matcher("2000-02-29 23:59:59");
System.out.println(matcher1.matches());
//邮箱
Pattern pattern2 = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
Matcher matcher2 = pattern2.matcher("hemmingway-@163.com");
System.out.println(matcher2.matches());
//13、字符串和数值类型的转换?
/*
*
*/
String s1 = "100";
String s2 = "253";
Integer int1 = Integer.parseInt(s1);
Integer int2 = Integer.parseInt(s2);
int ret = int1 + int2;
System.out.println("变量1: " + int1 + " 变量2:" + int2 + " 的和为:" + ret);
//14、去掉字符串中的空格
/*
*
*/
String s3 = "fdg dsl dfgds sdngds dsgdss";
String s4 = s3.replaceAll(" ", ""); //第一个参数是正则表达式子
System.out.println(s3 + ", " + s4);
//15、子字符串
/*
* substring
*
*/
String testStr = "lkssldf2011dsfgd36";
char[] chars = testStr.toCharArray();
boolean bool = Character.isDigit(chars[7]);
if(bool == true)
System.out.println("字符串: " + testStr + " 包含数字");
//16、
}
}
Java字符串与包装类
原创mb63982c735c3d9 ©著作权
©著作权归作者所有:来自51CTO博客作者mb63982c735c3d9的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:Counting Bits
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java-长字符串加密
加密:为你的长字符串提供最高级别的保护!!!
加密算法 JAVA -
Java设置JSON字符串参数编码
本文详细介绍了如何在Java中创建JSON字符串以及在Java中设置JSON字符串参数编码的方法。
json 字符串 JSON Java -
spring boot批量调度卡住
业务需求是将一张2000多万的数据表进行分表插入。引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <
spring boot批量调度卡住 spring boot 后端 java spring