JAVA SE之面向对象7:Scanner与String类
发布日期:2021-06-29 02:38:22
浏览次数:3
分类:技术文章
本文共 7804 字,大约阅读时间需要 26 分钟。
今日学习:
Scanner(用于接收键盘录入数据)String(字符串)
Scanner的概述和构造方法原理
- Scanner的概述:JDK5以后用于获取用户的键盘输入
- Scanner的构造方法原理: Scanner(InputStream source) System类下有一个静态的字段: public static final InputStream in; 标准的输入流,对应着键盘录入。
Scanner类的hasNextXxx()和nextXxx()方法
基本格式:
- hasNextXxx() 判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx;
- nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同。
Scanner获取数据出现的小问题及解决方案
- 三个常用的方法: public int nextInt():获取一个int类型的值 public String nextLine():获取一个String类型的值 public String next():获取一个String类型的值
- 问题解决方案 第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串; 第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
String类的概述
- 字符串:字符串是由多个字符组成的一串数据(字符序列),可以看成是字符数组。
- String类的概述 通过JDK提供的API,查看String类的说明; (1).字符串字面值"abc"也可以看成是一个字符串对象; (2).字符串是常量,一旦被创建,就不能被改变。
String类的构造方法
- public String():空构造
- public String(byte[] bytes):把字节数组转成字符串
- public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
- public String(char[] value):把字符数组转成字符串
- public String(char[] value,int index,int count):把字符数组的一部分转成字符串
- public String(String original):把字符串常量值转成字符串
String的特点
- String的特点:一旦被创建就不能改变。因为字符串的值是在堆内存的常量池中划分空间分配地址值的。
- 内存图解释(内容不能变,引用可以变) String s = “hello” ; s = “world” + “java”; 问s的结果是多少?
- 内存图解释: 内容不能变,引用可以变。
String类的常见面试题
-
面试题1
String s = new String(“hello”)和String s = “hello”;的区别 并画内存图解释。 -
面试题2
看程序写结果String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1 == s2); //falseSystem.out.println(s1.equals(s2)); //trueString s3 = new String("hello");String s4 = "hello";System.out.println(s3 == s4); //falseSystem.out.println(s3.equals(s4)); //trueString s5 = "hello";String s6 = "hello";System.out.println(s5 == s6); //trueSystem.out.println(s5.equals(s6)); //true
-
面试题3
看程序写结果String s1 = "Hello";String s2 = "Hello";String s3 = "Hel" + "lo";String s4 = "Hel" + new String("lo");String s5 = new String("Hello");String s6 = s5.intern();String s7 = "H";String s8 = "ello";String s9 = s7 + s8;System.out.println(s1 == s2); //trueSystem.out.println(s1 == s3); //trueSystem.out.println(s1 == s4); //falseSystem.out.println(s1 == s9); // falseSystem.out.println(s4 == s5); //falseSystem.out.println(s1 == s6); //true
String类的判断功能
- public boolean equals(Object obj):比较字符串的内容是否相同,区分大小写;
- public boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写;
- public boolean contains(String str):判断字符串中是否包含传递进来的字符串;
- public boolean startsWith(String str):判断字符串是否以传递进来的字符串开头;
- public boolean endsWith(String str):判断字符串是否以传递进来的字符串结尾;
- public boolean isEmpty():判断字符串的内容是否为空串""。
模拟用户登录
public class MyTest { public static void main(String[] args) { String name = "zhangsan"; String password = "123456"; for (int i = 0; i<3; i++) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名"); String uname = sc.nextLine(); System.out.println("请输入密码"); String upwd = sc.nextLine(); if (name.equals(uname) && password.equals(upwd)) { System.out.println("欢迎" + name + "登陆"); break; } else{ if(i==2){ System.out.println("您的次数已用完!"); } else { System.out.println("输入错误," + "您还剩余" +(2-i) + "次机会"); } } } }}
String类的获取功能
- public int length():获取字符串的长度
- public char charAt(int index):获取指定索引位置的字符
- public int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
- public int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引
- public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引
- public int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引
- public String substring(int start):从指定位置开始截取字符串,默认到末尾
- public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串
字符串的反向遍历
public class Test_3 { public static void main(String[] args) { String str ="abcdefg"; for(int i=0;i
统计不同类型字符个数
public class Test3 { /** * 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。 * ABCDEabcd123456!@#$%^ * 分析:字符串是有字符组成的,而字符的值都是有范围的,通过范围来判断是否包含该字符 * 如果包含就让计数器变量自增 */ public static void main(String[] args) { String s = "ABCDEabcd123456!@#$%^"; int big = 0; int small = 0; int num = 0; int other = 0; //1,获取每一个字符,通过for循环遍历 for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); //通过索引获取每一个字符 //2,判断字符是否在这个范围内 if(c >= 'A' && c <= 'Z') { big++; //如果满足是大写字母,就让其对应的变量自增 }else if(c >= 'a' && c <= 'z') { small++; }else if(c >= '0' && c <= '9') { num++; }else { other++; } } //3,打印每一个计数器的结果 System.out.println(s + "中大写字母有:" + big + "个,小写字母有:" + small + "个,数字字符:" + num + "个,其他字符:" + other + "个"); }}
String类的转换功能
- public byte[] getBytes():把字符串转换为字节数组
- public char[] toCharArray():把字符串转换为字符数组
- public static String valueOf(char[] chs):把字符数组转成字符串
- public static String valueOf(int i):把int类型的数据转成字符串 **注意:**String类的valueOf方法可以把任意类型的数据转成字符串。
- public String toLowerCase():把字符串转成小写
- public String toUpperCase():把字符串转成大写
- public String concat(String str):把字符串拼接
按要求转换字符
需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
public class MyTest { public static void main(String[] args) { String str = "aasdfeASFDFasdfeasdfadsfasdf"; String frist = str.substring(0, 1);//先取出字符串中的首字母 String after = str.substring(1);//再取出字符串中的剩余字母 String s=frist.toUpperCase();//对首字母转换成大写 String s1=after.toLowerCase();//对剩余字母转换成小写 String s2 = s.concat(s1);//拼接转换的字符或字符串 System.out.println(s2); } }
输出结果:Aasdfeasfdfasdfeasdfadsfasdf
String类的其他功能
- String的替换功能及案例演示 public String replace(char old,char new) 将指定字符进行互换 public String replace(String old,String new) 将指定字符串进行互换
- String的去除字符串两空格及案例演示 public String trim() 去除两端空格
- String的按字典顺序比较两个字符串及案例演示 public int compareTo(String str) 会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果;如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果;如果连个字符串一摸一样 返回的就是0。
- public int compareToIgnoreCase(String str) 跟上面一样 只是忽略大小写的比较
把数组转成字符串
需求:把数组中的数据按照指定个格式拼接成一个字符串
举例: int[] arr = {1,2,3}; 拼接结果: "[1, 2, 3]"
代码如下:
public class MyTest { public static void main(String[] args) { int arr[]={ 1,2,3}; String a="["; for (int i = 0; i < arr.length; i++) { a+=arr[i]; if(i!=arr.length-1){ a+=","; }else{ a+="]"; } } System.out.println(a); } }
字符串反转并断点查看
需求:把字符串反转
举例:键盘录入"abc" 反转结果:"cba"
代码如下:
public class MyTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入字符串:"); String s=sc.nextLine(); String ch=""; for (int i=s.length()-1; i >=0 ; i--) { ch+=s.charAt(i); } System.out.println("输出的字符串:"+ch); } }
在大串中查找小串出现的次数代码实现
需求:统计大串中小串出现的次数
public class MyTest4 { public static void main(String[] args) { String maxStr = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"; int conut = 0; if (!maxStr.contains("#")) { String s = maxStr.replace("java", "#"); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '#') { conut++; } } } System.out.println(conut); System.out.println("============================================================"); int length = maxStr.length(); String java = maxStr.replace("java", ""); int length1 = java.length(); int len = (length - length1) / 4; System.out.println(len); }}
转载地址:https://blog.csdn.net/yzl109zj125/article/details/116428970 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月24日 10时06分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
23行python代码爬取知乎全部回答
2021-07-02
Python 使用 PyQt5 开发的关机小工具分享
2021-07-02
Python 提取音乐频谱并可视化
2021-07-02
使用 Python 为女神挑选口红
2021-07-02
微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!
2021-07-02
10 行 Python 代码自动清理电脑内重复文件,解放双手!
2021-07-02
我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
2021-07-02
python爬取双色球网站中奖纪录,我也想中奖
2021-07-02
python爬取花木兰豆瓣影评,并进行词云分析
2021-07-02
python爬取英雄联盟官网所有英雄皮肤数据
2021-07-02
python爬取堆糖网每日精选图片
2021-07-02
Python爬取高质量电脑壁纸,还是很好看的
2021-07-02
python血脉贲张的cosplay小姐姐图片
2021-07-02
Python爬取股票数据,做量化交易你总得要有数据吧
2021-07-02
设计师的福利,python爬取素材网站
2021-07-02
Python爬取素材网站3000多条音频素材文件
2021-07-02
4399小游戏童年的乐趣,python爬取4399全站小游戏
2021-07-02
20行Python代码爬取下载应用宝所有APP软件
2021-07-02
Python爬取姜子牙网上影评,实现词云图
2021-07-02
Python爬取设计素材网站,免费使用素材~
2021-07-02