1.Scanner的概述和方法介绍

* A:Scanner的概述
  * 是一个从键盘输入的类,有final修饰,不能被子类继承
  * Scanner sc = new Scanner(System.in);
  * String str = sc.nextLine();
* B:Scanner的构造方法原理
  * Scanner(InputStream source)
  * System类下有一个静态的字段:
  * public static final InputStream in; 标准的输入流,对应着键盘录入。

* C:一般方法
  * hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx。
  * nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符。

2.Scanner获取数据

* 两个常用的方法:
  * public int nextInt():获取一个int类型的值
  * public String nextLine():获取一个String类型的值。

3.String类的概述

* A:什么是字符串
* B:String类的概述
  * 通过JDK提供的API,查看String类的说明
  * 1.Java 程序中的所有字符串字面值(如"abc")都作为此类的实例(对象)实现。
  * 2.字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
  * 3.String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。
  * 4.Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过StringBuilder(或 StringBuffer)类及其append 方法实现的。字符串转换是通过toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
  * 5.除非另行说明,否则将 null 参数传递给此类中的构造方法或方法将抛出 NullPointerException。

  * 可以看到这样的两句话。
    * a:字符串字面值"abc"也可以看成是一个字符串对象。
      * String s = "myworld";
    * b:字符串是常量,一旦被赋值,就不能被改变。但可以使其变成垃圾。

4.String类的构造方法

* A:常见构造方法
  * 1.public String():空参构造,表示一个空字符序列
  * 2.public String(byte[] bytes):把字节数组转成字符串,(也称解码)
  * 3.public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
  * 4.public String(char[] value):把字符数组转成字符串
  * 5.public String(char[] value,int index,int count):把字符数组的一部分转成字符串
  * 6.public String(String original):把字符串常量值转成字符串
* B:案例演示
  * 演示String类的常见构造方法
  * "" 与 null 的区别??
    * String s8 = "";
    * String s9 = null;
    * System.out.println(s8);
    * System.out.println(s9);//打印对象的引用如果是null就返回null,如果不是null就
    * 返回对象的toString方法
    //""--是一个String类的对象,可以调用String类中所有方法
    //null--null是一个空值,不能调用任何方法,因为调用就会报空指针异常(NullPointerException)
    * public int length():返回此字符串的长度。

5.String类的常见面试题

* 1.判断定义为String类型的s1和s2是否相等
  * String s1 = "abc";//会进常量池创建对象,然后把地址赋给s1。
  * String s2 = "abc";//先看常量池中有没有相同的对象,有的话,把地址赋给s2,没有的话,重新创建对象。
  * System.out.println(s1 == s2);//比较的是对象的地址,相同。
  * System.out.println(s1.equals(s2));//比较的是对象的值。

* 2.下面这句话在内存中创建了几个对象?
  * String s1 = new String("abc");//创建了俩对象,一个在常量池里,一个堆里(常量池的副本)。

* 3.判断定义为String类型的s1和s2是否相等
  * String s1 = new String("abc");//创建了俩对象,其中s1指向的是在堆里的那个对象的地址,
  * String s2 = "abc";//s2指向的是在常量池中对象的地址。
  * System.out.println(s1 == s2); ?//比较地址值,一个常量池中,一个堆中,是不相等的。
  * System.out.println(s1.equals(s2)); ?//比较的是对象的值,相等。

* 4.判断定义为String类型的s1和s2是否相等
  * String s1 = "a" + "b" + "c";//java中自带常量优化机制,右边在编译时,已经是“abc”字符串,所以在常量池中创建对象,然后把地址赋给s1,
  * String s2 = "abc";//先在常量池中查找是否有相同的对象,如果有,则把对象的地址值,赋给s2,如果没有,就在常量池中创建一个对象,然后把其地址值付给s2,
  * System.out.println(s1 == s2); ?//比较地址值,他们都指向常量池中相同的对象,所以相等,结果为true,
  * System.out.println(s1.equals(s2)); ?//比较的是对象中的值,相等,结果为ture。

* 5.判断定义为String类型的s1和s2是否相等
  * String s1 = "ab";//在常量池中创建对象,然后把其地址赋给s1,
  * String s2 = "abc";//在常量池中创建对象,然后把其地址赋给s2,
  * String s3 = s1 + "c";//当字符串与对象用+连接的时候,底层会调用StringBuffer的append方法,对字符串进行添加,然后将StringBuffer对象转换为String对象,并赋值给s3,s3记录的是堆内存对象的地址值。
  * System.out.println(s2 == s3);? // false
  * System.out.println(s3.equals(s2)); ? //ture

6.String类的判断功能

  * boolean equals(Object obj):比较字符串的内容是否相同,按字典顺序,区分大小写
  * boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
  * boolean contains(String str):判断大字符串中是否包含小字符串
  * boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
  * boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
  * boolean isEmpty():判断字符串是否为空。

7.String类的获取功能

  * int length():获取字符串的长度。
  * char charAt(int index):获取指定索引位置的字符
  * int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
  * int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
  * int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
  * int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
  * lastIndexOf----同上
  * String substring(int start):从指定位置开始截取字符串,默认到末尾。
  * String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

8.统计不同类型字符个数

需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。public static void main(String[] args) {//定义计数器int big = 0;//大写字母int small = 0;int math = 0 ;int other = 0;Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.nextLine();for (int i = 0; i < str.length(); i++) {char temp = str.charAt(i);if(temp >= 'A' && temp <= 'Z'){big++;}else if(temp >= 'a' && temp <= 'z'){small++;}else if(temp >='0' && temp <= '9'){math ++;}else {other++;}}System.out.println("大写字母:"+big);System.out.println("小写字母:"+small);System.out.println("数字:"+math);System.out.println("非法字符:"+other);}    

9.String类的转换功能

  * byte[] getBytes():把字符串转换为字节数组,(也称编码)。
  * char[] toCharArray():把字符串转换为字符数组。
  * static String valueOf(char[] chs):把字符数组转成字符串。
  * static String valueOf(int i):把int类型的数据转成字符串。
  * 注意:String类的valueOf方法可以把任意类型的数据转成字符串。

  * String toLowerCase():把字符串转成小写。
  * String toUpperCase():把字符串转成大写。
  * String concat(String str):把字符串拼接。

需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str1 = sc.nextLine();String str2 = //链式编程str1.substring(0, 1).toUpperCase().concat(str1.substring(1, str1.length()).toLowerCase());System.out.println(str2);}

需求:把数组中的数据按照指定个格式拼接成一个字符串* 举例:* int[] arr = {1,2,3};    * 输出结果:* "[1, 2, 3]"public static void main(String[] args) {int[] arr = {1,2,3};  //定义一个数组String str = "[";  //初始化字符串数组的值为“[”for (int i = 0; i < arr.length; i++) {  //遍历数组if(i == 2){  //若遍历到最后时 ,需要做的处理str = str + arr[i] + "]";}else {  //某则则是这个处理str = str + arr[i] + ",";}}System.out.println(str);//打印字符串}

10.String类的其他功能

* A:String的替换功能及案例演示
  * String replace(char old,char new) //将字符串中的字符old值全部替换成字符new值
  * String replace(String old,String new)
* B:String的去除字符串两空格及案例演示
  * String trim()
* C:String的按字典顺序比较两个字符串及案例演示
  * int compareTo(String str)(暂时不用掌握)
  * int compareToIgnoreCase(String str)

需求:把字符串反转* 举例:键盘录入"abc"        * 输出结果:"cba"public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.nextLine();char[] arr = str.toCharArray();//把字符串转化成字符数组for (int i = 0; i < arr.length/2; i++) {char temp = arr[i];arr[i] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = temp;}String str1 = "" ;for (char c : arr) {str1 = str1 + c;}System.out.println(str1);}

统计大串中小串出现的次数public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入较大的字符串:");String strbig = sc.nextLine();System.out.println("请输入较小的字符串:");String strsmall = sc.nextLine();int count = 0 ;//计数器int index;while((index = strbig.indexOf(strsmall)) != -1){strbig = strbig.substring(index + strsmall.length());count++;}System.out.println(count);}

转载于:https://www.cnblogs.com/wanghui1316/p/5442233.html

Scanner、String(java基础知识十二)相关推荐

  1. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  2. Java基础知识(十) 多线程

    Java基础知识 1. 什么是多线程?它与进程有什么区别?为什么要使用多线程 2. 同步和异步有什么区别 3. 如何实现Java多线程 4. run()方法与start()方法有什么区别 5. 多线程 ...

  3. Java基础知识复习(二)

    对最近java基础知识理解不足的方面进行了巩固,写个博客记录一下!

  4. Java基础知识(二十二)常用类三(StringBuffer类)

    目录 一.StringBuffer类 1.概述: 2.线程安全与不安全: 3.StringBuffer的特点: 4.可修改 5.StringBffer与String的区别: 6.StringBuffe ...

  5. 必须掌握的Java基础知识(二)

    抽象类 抽象类和抽象方法必须使用abstract修饰符,有抽象方法的类只能够定义称为抽象类,抽象类中可以没有抽象方法.抽象方法没有方法体.抽象类不能够被实例化,因此无法使用new创建对象. 直接定义一 ...

  6. Java基础(十二)

    合成设计模式的引出 引用传递实际应用 案例一(类关联结构) 有的人有一辆汽车,有些人坐公交:要求通过面向对象的设计来解决实现以上的这种关系转换. class Car{private String na ...

  7. 物流基础知识(十二)

    现代物流的价值 一.对国民经济增长的基础性支撑 新制度经济学的流行和新兴古典经济学的兴起使经济学对运输业的重要性有了进一步的认识.新兴古典经济学家杨小凯认为,运输发展作为改进交易效率的重要方式,可以提 ...

  8. Java基础语法十二 泛型程序设计

    1 意义 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用. 常见应用 : ArrayList 2 K T V E ? object等的含义 类型变量使用大写形式 E – Element ( ...

  9. Java基础知识(二)之控制语句

    1.条件运算符   ⑴if...else... ⑵三目表达式--X?Y:Z 当X为真时,结果为Y:反之,为Z. ⑶switch(表达式){ case 1:    执行代码块 1; break: cas ...

  10. Java基础知识(二)—— API文档

    一.API是Java提供的基本编程接口,API文档详细说明了Java中常用类和方法的功能,开发者可以通过查阅API文档,调用应用程序接口(API)来编程.用于告诉开发者如何使用这些基础类及这些类中包含 ...

最新文章

  1. 基于运动相关分析的实时多源异构传感器时空标定方法研究
  2. WAMPSERVER安装之笑话
  3. 树莓派安装Ubuntu 18 64系统
  4. 今天是1024也是霜降
  5. mysql创建数据库schooldb_MySQL 创建数据表
  6. Android与Javascript交互示例(二)
  7. 从零开始学keras之使用 LSTM 生成文本
  8. Linux下无需按下回车(无阻塞)读取输入键值
  9. oracle12C 创建用户学习
  10. 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化
  11. SPOJ Can you answer the Queries系列
  12. 佳能g3800编程器固件_佳能g3800清零软件 佳能g3800打印机废墨清零
  13. 华为事件鸿蒙系统,科技大事件 迎接华为鸿蒙车机系统的到来
  14. 求解答!iframe在IE浏览器加载页面无反应问题
  15. 软件测试(二)-静态测试-数据流分析
  16. mysql统计出每个姓氏的人数_Python 之 MySql 每日一练 130——同名同性学生名单,并统计人数...
  17. “嗲”上海文化,女人需要学会的4种气质
  18. 笔记 | 推荐系统 —— lambda架构
  19. 镜像方式如何部署项目
  20. 模拟手机虚拟数字键盘

热门文章

  1. 使用终端shell命令批量改动一个文件下的全部文件的读写权限
  2. 17995 Stupid thief 组合数学
  3. 07_XPath_02_常用语法
  4. Maven如何手动添加jar包到本地Maven仓库
  5. oracle 自增加列的实现
  6. linux运维命令3
  7. P2962 [USACO09NOV]灯Lights 对抗搜索
  8. React Mixin
  9. 【bzoj1712】[Usaco2007 China]Summing Sums 加密 矩阵乘法
  10. 实验八:SQLite数据库操作