Java基础入门,字符串和日期
字符串,字符,字节的关系
- 连续的字符组成字符串
- 除了( ASCII码表 )中字符,其他都是三个字节组成一个字符
基础知识
1 2 3 4 5
| byte b1 = 'A'; byte b2 = 'a'; System.out.println(b1); System.out.println(b2);
|
字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
char[] cs = {'a', '中', '国'};
String sAll = new String(cs); System.out.println(sAll);
byte[] bs = {-28, -72, -83, -27, -101, -67}; String s = new String(bs);
System.out.println(s);
byte[] bs1 = {97}; String s1 = new String(bs1); System.out.println(s1);
byte[] bs2 = {97, -28, -72, -83, -27, -101, -67}; String s2 = new String(bs2); System.out.println(s2);
|
扩展知识
128个US-ASCII字符,只需一个字节编码。
拉丁文等字符,需要二个字节编码。
大部分常用字(含中文),使用三个字节编码。
其他极少使用的Unicode辅助字符,使用四字节编码。
Java代码验证
编码:将字符转为二进制代码称为编码。
解码:将二进制代码转为字符称为解码。
常见中文乱码的原因:编码和解码使用的规则不一致导致的。
1 2 3 4 5 6 7 8 9 10
|
byte[] b1 = "中".getBytes("UTF-8"); System.out.println("字节数组长度" + b1.length); System.out.println("字节数组内容" + Arrays.toString(b1));
byte[] d1 = {-28, -72, -83}; String utf8Str = new String(d1, "UTF-8"); System.out.println(utf8Str);
|
1 2 3 4 5 6 7 8
| byte[] b2 = "中".getBytes("gbk"); System.out.println("字节数组长度" + b2.length); System.out.println("字节数组内容" + Arrays.toString(b2));
byte[] d2 = {-42, -48}; String gbkStr = new String(d2, "gbk"); System.out.println(gbkStr);
|
[-28, -72, -83]解码为汉字”中”过程分析
[-28, -72, -83] 根据Unicode字符集,utf-8编码规则解码为汉字“中”
[-28, -72, -83]的二进制补码:1110 0100 1011 1000 1010 1101
转为整数是 14989485 ,对应的16进制E4 B8 AD
去Unicode字符集查找,根据utf-8 编码规则 可找到 对应Unicode “中”
字符串拼接
1 2 3 4 5 6
| String s = "a" + "b"; String s1 = "ab";
System.out.println(s.hashCode()); System.out.println(s1.hashCode());
|
字符串比较
1 2 3 4 5 6 7
| Boolean s1 = "a".equals("b"); System.out.println(s1);
Boolean s2 = "a".equalsIgnoreCase("A"); System.out.println(s2);
|
1 2 3 4 5 6
| String s = "a" + "b"; String s1 = "ab";
System.out.println(s.hashCode()); System.out.println(s1.hashCode());
|
字符串截取
字符串替换
字符串大小写
字符串查找
1 2 3 4 5 6 7 8 9 10 11 12
| String s = "Hello World"; char[] chars = s.toCharArray(); byte[] bytes = s.getBytes("UTF-8");
char c = s.charAt(1);
s.indexOf("World"); s.lastIndexOf("World"); s.contains("World"); s.startsWith("Hello"); s.endsWith("World"); s.isEmpty();
|
字符串StringBuilder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| StringBuilder s = new StringBuilder(); for (int i = 0; i < 5; i++) { s.append(i); } System.out.println(s.toString());
char uc = 'A'; StringBuilder s1 = new StringBuilder(); for (int i = 0; i < 26; i++) { s1.append((char) (uc + i)); } System.out.println(s1.toString());
char lc = 'a'; StringBuilder s2 = new StringBuilder(); for (int i = 0; i < 26; i++) { s2.append((char) (lc + i)); } System.out.println(s2.toString());
|
包装类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
int i = 10;
Integer i1 = new Integer(i);
Integer i2 = Integer.valueOf(i); Integer i3 = i;
int m1 = i1.intValue(); int m2 = i1;
|
时间日期类
日期类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
System.currentTimeMillis();
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateFormatString = sdf.format(d); System.out.println(dateFormatString);
String dateString = "2024-01-14 06:52:09"; Date parseDate = sdf.parse(dateString); System.out.println(parseDate);
d.setTime(System.currentTimeMillis());
d.getTime();
parseDate.before(d); parseDate.after(d);
|
日历类
1 2 3 4
| Calendar instance = Calendar.getInstance(); instance.get(Calendar.YEAR); instance.get(Calendar.MONTH); instance.get(Calendar.DATE);
|
日期格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public static Date parseDate(String dateString, String format) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.parse(dateString); }
public static String formatDate(Date date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); }
Date s = parseDate("2024-01-20", "yyyy-MM-dd"); System.out.println(s);
String date = formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"); System.out.println(date);
|
底部
没有了