how2j:JAVA学习笔记——DAY 9
1.格式化输出
在输出多个字符时,一般用“+”连接,如果变量较多,拼接就会变得很繁琐。当使用格式化输出时,就能非常简洁的表示。
%s表示字符串,%d表示数字,%n换行。
e . g .
String name="锤子";int strike=5;String item="人";//非格式化输出String sentence=name+"袭击了"+strike+"个"+item;System.out.println(sentence);//注意此处是println()//格式化输出String sentenceFormat="%s袭击了%d个%s%n";//此处是printf(指定输出语句,第一个格式化输出符号,第二个,第三个)System.out.printf(sentenceFormat,name,strike,item);//printf和format达到的效果是一致的,用printf()时调用了format()System.out.format(sentenceFormat,name,strike,item);
2.其他常用的格式化方法
int year = 2020;//总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达//直接打印数字System.out.format("%d%n",year);//总长度是8,默认右对齐System.out.format("%8d%n",year);//总长度是8,左对齐System.out.format("%-8d%n",year);//总长度是8,不够补0System.out.format("%08d%n",year);//千位分隔符System.out.format("%,8d%n",year*10000);//小数点位数System.out.format("%.2f%n",Math.PI);//不同国家的千位分隔符System.out.format(Locale.FRANCE,"%,.2f%n",Math.PI*10000);System.out.format(Locale.US,"%,.2f%n",Math.PI*10000);System.out.format(Locale.UK,"%,.2f%n",Math.PI*10000);
3.字符
保存一个字符时使用char。char对应的封装类是Character。
Character中的常见方法举例:
//不能把字符直接转换为字符串,下面这种会报错//String a='a';String str=Character.toString('a');System.out.println(str);//以下所有方法只能转换一个字符,不能转换字符串//判断字符是否为字母,返回布尔类型,char型用单引号System.out.println(Character.isLetter('3'));System.out.println(Character.isLetter('a'));//判断是否为数字System.out.println(Character.isDigit('3'));System.out.println(Character.isDigit('a'));//判断是否为空白System.out.println(Character.isWhitespace('a'));System.out.println(Character.isWhitespace('5'));System.out.println(Character.isWhitespace(' '));//判断是否大写System.out.println(Character.isUpperCase('A'));System.out.println(Character.isUpperCase('x'));System.out.println(Character.isUpperCase('5'));//判断是否小写System.out.println(Character.isLowerCase('A'));System.out.println(Character.isLowerCase('x'));System.out.println(Character.isLowerCase('6'));//字符转换为小写System.out.println(Character.toLowerCase('A'));//如果是数字转换为大小写,那么转换之后还是数字本身System.out.println(Character.toLowerCase('5'));System.out.println(Character.toLowerCase('a'));//字符转换为大写System.out.println(Character.toUpperCase('A'));System.out.println(Character.toUpperCase('a'));System.out.println(Character.toUpperCase('5'));
4.常见转义
①
System.out.println("使用一个空格不能达到右对齐效果");System.out.println("abc def");System.out.println("ab def");System.out.println("a def");System.out.println("a def");
②
//转义字符要再加一个\才能正常显示System.out.println("使用\\t制表符能达到右对齐效果");System.out.println("abc\tdef");System.out.println("ab\tdef");System.out.println("a\tdef");
③
System.out.println("一个\\t制表符的长度展示");System.out.println("12345678对齐");System.out.println("\t对齐");
④
System.out.println("换行符\\n的作用效果");System.out.println("哈哈\n嘿嘿");
⑤
System.out.println("单引号 \\'");System.out.println("\'abc\'def");
⑥
//显示双引号转义字符前要加两个\\,否则将会报错(编译器认为少了一个双引号)System.out.println("双引号\\\"");System.out.println("\"哈哈\"嘿嘿");
⑦
System.out.println("反斜杠本身\\");System.out.println("哈哈哈哈\\");
5、字符串
字符串即字符的组合。在Java中字符串是一个类,因此我们所见到的字符串都是对象。
常见创建字符串手段:
1.每当有一个字面值出现的时候,虚拟机会自动创建一个字符串。
2.调用String的构造方法创建一个字符串对象。
3.通过+加号进行字符串拼接也会创建新的字符串对象。
String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象String teemo = new String("提莫"); //创建了两个字符串对象char[] cs = new char[]{'崔','斯','特'};String hero = new String(cs);//通过字符数组创建一个字符串对象String hero3 = garen + teemo;//通过+加号进行字符串拼接
注:String类被默认修饰为final,所以是不能被继承的。字符串对象默认是immutable的,里面的内容永远不能改变。
6.操纵字符串
关键字 | 简介 |
---|---|
charAt | 获取字符 |
toCharArray | 获取对应的字符数组 |
subString | 截取字符串 |
split | 分隔 |
trim | 去掉首尾空格 |
toLowerCase/toUpperCase | 大小写 |
indexOf/lastIndexOf/contains | 定位 |
replaceAll/replaceFirst | 替换 |
7.比较字符串(DAY 6\Object类)
①“==”判断引用指向是否为同一个对象
String str1 = "the light";String str2 = new String(str1);//==用于判断是否是同一个字符串对象System.out.println( str1 == str2);
很明显,上所示示例代码中str1和str2并不是同一个字符串对象。一般来说,编译器每碰到一个字符串的字面值就会创建一个新的对象。且如上所示str2虽然内容和str1相同,但指向的是new出来的另一个对象。
String str1 = "the light";String str3 = "the light";System.out.println( str1 == str3);
上所示为特例,编译器在遇到字面值str1以后,创建了一个字符串对象(the light)。在下一行,编译器发现str3这个字面值的内容已经存在了,所以str3就会指向该内容的对象。所以str1和str3的对象是同一个。
②“equals()”判断字符串内容是否相同
String str1 = "the light";String str2 = new String(str1);String str3 = str1.toUpperCase();//==用于判断是否是同一个字符串对象System.out.println( str1 == str2);System.out.println(str1.equals(str2));//完全一样返回trueSystem.out.println(str1.equals(str3));//大小写不一样,返回falseSystem.out.println(str1.equalsIgnoreCase(str3));//忽略大小写的比较,返回true
③判断是否以子字符串开始或者结束
String str1 = "the light";String start = "the";String end = "Ight";System.out.println(str1.startsWith(start));//以...开始System.out.println(str1.endsWith(end));//以...结束
8. StringBuffer
StringBuffer是可变长的字符串。
①关键字append
//关键字append的使用String str1="let there be";//根据str1创建一个StringBuffer对象StringBuffer sb1=new StringBuffer(str1);//在sb1指向的对象后追加字符串sb1.append(" light");System.out.println(sb1);
②关键字delete
//删除字符串sb1.delete(4, 10);//删除位置4至10的字符串System.out.println(sb1);
③关键字insert
//插入字符串sb1.insert(4, "there");//在位置4插入字符串thereSystem.out.println(sb1);
④关键字reverse
//反转字符串sb1.reverse();//原字符串由尾到头进行反转System.out.println(sb1);
为什么StringBuffer可以改变长度?
和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。但是这个数组留有冗余长度。
//StringBuffer长度和容量String str2="Hi";StringBuffer sb2=new StringBuffer(str2);System.out.println(sb2.length());System.out.println(sb2.capacity());
9.日期 Date
在使用Date类时,要先导入java.util.Date。
①时间原点
所有的数据类型,不管是整数、布尔、浮点或是字符串,最后都需要以数字的形式表现出来。日期类型也不理例外。在日期类型中0代表的数字即Java中的时间原点,其对应的日期时1970年01月01日08点00分00秒。所有的日期都是以这个0点为基准,每过一毫秒就加一。
②创建日期对象
Date d1=new Date();//不加参数为当前时间
System.out.println("当前时间:");
System.out.println(d1);// 从1970年1月1日 早上8点0分0秒 开始经历的毫秒数
Date d2 = new Date(5000);
System.out.println("从1970年1月1日 早上8点0分0秒 开始经历了5秒的时间");
System.out.println(d2);
③ getTime
getTime()得到的时一个long型的整数。
这个整数代表从1970年1月1日 早上8点0分0秒开始,每经过一毫秒,增加1。直接打印对象,会看到“Fri Nov 26 09:14:53 CST 2021”。
④System.currentTimeMillis()
该方法用于读取当前时间的毫秒数。
new Date().getTime()和System.currentTimeMillis()是相同的。但由于机器性能原因,两者打印出的结果不会相同,因为执行代码也需要时间。
10.日期格式化
①日期转字符串
y 代表年
M 代表月
d 代表日
H 代表24进制的小时
h 代表12进制的小时
m 代表分钟
s 代表秒
S 代表毫秒
//先import java.text.SimpleDateFormatSimpleDateFormat sdf=new SimpleDateFormat();//创建日期对象Date d=new Date();//格式化日期对象并转换成字符串String str=sdf.format(d);//输出System.out.println(str);
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");Date d2=new Date();String str2=sdf2.format(d2);System.out.println(str2);
②字符串转日期
格式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一样就会抛出解析异常ParseException。
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str3="2021-11-29 14:14:14";//注意连接符号要与上面一致try {Date d3=sdf3.parse(str3);System.out.format("字符串%s通过转换为日期对象:%s",str3,d3.toString());} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}
11. Calendar
Calendar类即日历类,常用于进行”翻日历“,比如说下个月的今天是多久
①Calendar与Date进行互相转换
采用单例模式获取日历对象Calendar.getInstance();
//采用单例模式获取日历对象Calendar.getInstance();Calendar c = Calendar.getInstance();//通过日历对象得到日期对象Date d = c.getTime();Date d2 = new Date(0);c.setTime(d2); //把这个日历,调成日期 : 1970.1.1 08:00:00
②翻日历
add()方法,在原日期上增加年/月/日。
set()方法,直接设置年/月/日。
Calendar c = Calendar.getInstance();Date now = c.getTime();// 当前日期System.out.println("当前日期:\t" + format(c.getTime()));// 下个月的今天c.setTime(now);c.add(Calendar.MONTH, 1);System.out.println("下个月的今天:\t" +format(c.getTime()));// 去年的今天c.setTime(now);c.add(Calendar.YEAR, -1);System.out.println("去年的今天:\t" +format(c.getTime()));// 上个月的第三天c.setTime(now);c.add(Calendar.MONTH, -1);c.set(Calendar.DATE, 3);System.out.println("上个月的第三天:\t" +format(c.getTime()));
how2j:JAVA学习笔记——DAY 9相关推荐
- how2j:JAVA学习笔记——DAY 8
1.封装类 JAVA是一种面向对象语言,JAVA中的类把方法和数据连接在一起,构成了自包含式的处理单元.在JAVA在不能定义基本类型对象,为了能将基本类型视为对象进行除了,并能连接相关方法,JAV ...
- how2j:JAVA学习笔记——DAY4
1.数组 数组是一个固定长度的,包含了相同数据类型的容器. 2.声明数组 数据类型[] 变量名 or 数据类型 变量名[] []:表示该变量是一个数组 int:表示数组中所有元素的数据类型 但是声明数 ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
最新文章
- 游遍中国 —— 大街小巷、秘境与远方
- 【Clion-Ubuntu-dlib】运行一个dlib案例(一)(如何在clion编译器中配置CMakeLists)
- Git之第三方托管oschina
- 计算机图形学图形旋转_计算机图形学翻译
- 手把手教你搭建自己的个人博客(图文教程)
- QGIS+GH + MapServer
- Python操作SQLServer示例
- Baxter实战 (五)安装openNI2,NiTE-2并实现kinect 2实现动作跟随
- Oracle 开放源代码项目
- 推荐一款开源游戏开发平台
- MATLAB识别实验,基于MATLAB的图像识别
- CCF_Java_201909-3_字符画
- 运维面试必问的监控系列高频面试题(2021年最新版)
- IP静态路由实验(基于华为eNSP模拟器)
- CCF推荐+SCI二区期刊征收AI方向特刊|确定3个月出录用结果
- Windows取证一
- Mac与远程服务器数据交互软件Cyberduck
- gnuplot使用简介
- 暴跌是因币安丢币后做空?让链上数据告诉你真相
- 用Excel做饼图的一点技巧
热门文章
- IDEA 出现问题:JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)解决方案(JAVA 小虚竹)
- 饥荒云服务器t键,饥荒T键使用说明 | 手游网游页游攻略大全
- 钉钉小程序父组件调用子组件方法(钉钉小程序踩坑实录)
- 做金融直播,这几个问题一定要知道
- 中国动力电池PACK行业商业模式创新及发展方向建议报告2022-2028年版
- python-优矿-牛市价差和熊市价差组合策略
- 激光雷达运动物体分割论文汇总(2021-2022)
- 批量备案域名查询工具-批量备案域名扫描查询
- 【崩坏学园2 不止】使用unity-studio提取并制作游戏内看板
- Carsim基本使用方式