zoukankan      html  css  js  c++  java
  • day 08---有用

    案例: 演示使用Scanner的小细节问题.

    问题描述:
    先用nextInt()接收用户录入的整数, 在用nextLine()接收用户录入的字符串, 会导致用户无法录入字符串的情况.
    产生原因:
    1. nextInt() 和 nextLine()的结束标记都是:
    2. nextInt()方法只接收用户录入的数字, 不识别(不接收)
    3. 遗留的 被 nextLine()方法识别到, 所以导致该方法直接结束, 没有让用户录入.
    解决方案:
    方式1: 重新new一个Scanner对象.
    方式2: 重新调用一次nextLine()方法.
    方式3: 通过 next()方法接收.
    方式4: 都用字符串接收, 然后把字符串形式的整

     

     

    案例: 演示字符串的常量优化机制.

    结论(记忆): Java中有常量优化机制:
    针对于byte类型:
    如果是变量相加:
    会提升类型, 然后在运算, 提升规则: byte, short, char -> int -> long -> float -> double
    如果是常量相加:
    会直接运算, 然后看结果在不在左边的数据类型范围内, 在, 不报错, 不在, 就报错.
    针对于String类型:
    如果是变量相加:
    会在堆区开辟空间.
    如果是常量相加:
    会直接在常量池中进行拼接, 不会在堆区开辟新空间.

    上述的相同点是: 如果同时有 变量 和 常量 参与操作, 按照 变量 的规则走.

     

     

     

    需求:
    1.定义方法reverse(), 实现字符串的反转.
    2.在main方法中键盘录入一个字符串, 调用上述的方法后, 在控制台输出结果.
    3.例如: 键盘录入abc, 输出结果cba.
    提示: 用for循环, 倒序遍历数组, 然后拼接每一个元素即可.
    */
    public class Demo06 {
    public static void main(String[] args) {
    //1. 提示用户录入字符串, 并接收.
    Scanner sc = new Scanner(System.in);
    System.out.println("请录入一个字符串: ");
    String str = sc.nextLine(); //abc

    //2. 定义一个新的字符串, 用来记录反转后的结果.
    String newStr = reverse(str);
    //6. 打印结果.
    System.out.println("反转后, 结果是: " + newStr);

    }

    public static String reverse(String str) {
    String newStr = "";

    //3. 把原始字符串转成字符数组.
    char[] chs = str.toCharArray(); //'a', 'b', 'c'

    //4. 倒序遍历, 获取每一个字符.
    for (int i = chs.length - 1; i >= 0; i--) {
    //chs[i] 记录的就是 原始字符串中的每一个字符. 'a', 'b', 'c'
    //5. 将获取到的字符拼接给: 新的字符串.
    newStr += chs[i];
    }

     

  • 相关阅读:
    用户需求与抱怨的理解:重视用户所关注的核心利益
    有效的沟通,从聆听开始
    Forms 身份验证下“诡异”的Cookie 丢失问题
    Q 语言初学者系列:(2)基本数据类型
    Q 语言初学者系列:(1)开门篇
    熟悉的感觉
    将.NET Entity Framework 的 Cache模块移植到JAVA平台
    [JAVA]你见过这样的switch吗?
    网站上图片"另存为" 为什么是 bmp 格式
    KDB+性能分析:内存篇
  • 原文地址:https://www.cnblogs.com/shan13936/p/13833227.html
Copyright © 2011-2022 走看看