• Java代码规范、基本类型和实例演练


    1.代码分段

      当一个方法内部的代码超过7行时,就要考虑分成段落。

      使用空行分隔代码

      按照代码的功能进行分段

      最终效果是一眼就能在宏观上把握代码的结构

    1)举例 Card

         分成2段

       第一段:定义变量保存数据

       第二段:打印数据,实现功能

    (2)分形

    分形是自然界和人类社会普遍存在的现象

    分形的意思是整体结构和细节结构是相似的

    如河流主干好、与它支流是相似的

    如叶脉的主干和分支是相似的

    人类社会公路网、互联网都是分形的

     

    我们写的代码一样有分形结构

    3)Card实例分段后

    上面是数据

    下面是功能

     在结构上,它与类的结构相似

    Class 类名{

          属性1;

          属性2;

     

          方法1{

    }

    方法2{

    }

    }

    程序 = 输入 + 处理 + 输出

    方法 = 输入 (传参) + 处理(方法内部的代码) + 输出(return)

    二、关于基本类型

    任何编程语言都需要基本类型

    无论多么复杂的程序,无论多么复杂的类/对象,都是由基本类型组合而成的

    1>表示整数的基本类型: 

    byte       1字节(8位)        -128---127

    short      2字节(16位)       -32768---32767

    int        4字节(32位)       -21亿---21亿

    long       8字节(64位)       -2~63---2~63-1

    2>表示字符的基本类型

    char       2字节(16位)        0~65535

     

    3>表示布尔值的基本类型

    Boolean    1字节(8位)       true,false

      主要用来表示逻辑,主要与if/else配合使用

    4>表示小数的基本类型

    Float        4字节(32位)       精度比较差

    Double      8字节(64位)        精度稍微高一点

    由于2进制的限制,大多数小数都只能保存为近似值

     

    5>基本类型的理解

    基本类型的存储空间是固定不变的。

    如果存储数据超过相应类型的字节数就会溢出,溢出后结果是错误的。

    基本类型都在当前计算机的字长范围内,也就是计算的指令可以一次性处理它。

    基本类型可以直接进CPU进行计算和暂存,没有必要时不会进内存,更不会进硬盘

    基本类型的处理速度是最快的。

    基本类型通常都有配套的CPU指令

     

    三、java是强类型编程语言

    变量的类型不会变

     

    1)Java赋值规则:

      兼容类型可以赋值

      但字节变小时需要程序明确指出(所谓强制类型转换)

     

    2)JAVA字符串处理

       

      字符串不能保存在CPU中,运行时通常会保存在内存中。

      保存在内存中的类型都是引用类型:

           其数据在内存中

           CPU只是用一个地址32位整数)来表示它在内存中的保存位置

     

    3)关于字符串类型为什么被设计成不可变的?

     

    1>改变字符串的空间消耗比新创建一个所需要的空间还要

    如果改为链表实现,容易修改,但读写性能就会很差

    2>字符串在内存中是紧密存储的,后面没有空间可以供修改使用

    修改字符串通常要开辟新空间(而老字符串没变)

    3>即使字符串后面有空间,字符串移位也很慢。

    不移位就要使用链表,而链表前后指针比字符数据大至少4倍,会导致存储空间暴增,而且读取字符性能很差.

    4>字符串的 + 拼接,每一次 + 都会产生新字符串,内存消耗比较大

    尤其是循环时内部拼接字符串

    (4)实例分析

    //使用float表示小数,误差很容易出现,通常进行精确的计算时

    //不使用float,比如计算钱的时候

    float a = 0.1f;

    float b =0.8f;

    float c =a +b;

    System.out.println(c);

    //即使赋值为1,也不会改变a是float的类型

    a=1;

    //字符串类型无法转换成float,所以是不兼容类型

    //无法赋值

    //a = "abc";

    //已经声明过的变量,不能再次声明

    //这样就阻止了改变变量的类型

    //String a="123";

    //Java的这种强类型的性质是Java能够在商业上应用于大型项目的重要素质

    //其他弱类型编程语言,虽然开发速度快,但无法开发大型项目

    //弱类型编程语言:PHP、Node.js、Python

     

    //强类型语言的优势:

    //1.工具可以做的很强大

    //(发现错误的能力、修复代码的能力、重构能力很强、代码自动生成、代码提示能力)

    //2.对于程序员的约束比较好,能够实现很多设计思想

    int i = 1;

    //可以直接赋值

    a = i;

    double d = 1.5;

    //当存储空间变小时,不允许直接赋值

    //编译器为了安全会要求程序【明确】赋值

    //a = d;

    a = (float)d;//强制转换

    四、Java中常用的格式字符串

    String.format() 字符串格式化
    %s 字符串,通用,通用机制
    %c char
    %n 换行(
    %d 整数
    %05d 不足5位前面补0
    % 5d 不足5位前面补空格
    %-5d 不足5位后面补空格
    %x 十六进制
    %o 八进制
    %f 浮点数,数字格式化
    %,f 在数字中插入,
    %.5f 保留5位小数
    %e 指数
    %% 输出一个百分数符号
    %b bool,true

    注意直接使用:System.out.printf("格式字符串", 值, 值…);

     

    Alt shift r  同时修改相同的单词除关键字外


    五、Java运算符38

     

     

    六、Java运算符的优先级

     

    七、小项目实练之购物计费

    编程流程思路:输入单价和数量,如果输入有误,则重新输入。无误继续运行,输出本次消费累计结果。再进行选择继续清零、退出还是继续消费。清零将从0开始计算,退出则直接退出本次消费,继续消费则将所有的消费进行累计并输出。

     

    源代码:

    package com.zhiyou100;

    import java.util.Scanner;

    public class MyShop {

    public static void main(String[]args) {

    double price;

    int number;

    double total = 0;

    System.out.println("你好!欢迎光临小卖部");

    while (true) {

    boolean error =true;

    Scanner scanner = new Scanner(System.in);

    while (error) {

    try {

    System.out.print("请输入单价:");

    price = scanner.nextDouble();

    System.out.print("请输入数量:");

    number = scanner.nextInt();

    total += price * number;

    error =false;

    } catch (Exception e) {

    System.out.println("输入有误,请重新输入!");

      scanner.nextLine();

    }

    }

    System.out.printf(String.format("本次消费累计结果:¥%.2f",total));

    System.out.println();

    System.out.println("清零请输入c,退出请输入q,按任意键继续");

            scanner.nextLine();

    String choice = scanner.nextLine();

    if (choice.equals("c")) {

    total = 0;

    } else if (choice.equals("q")) {

    System.out.println("本次计费结束");

    break;

    }

    }

    }

    }


    八、小项目实练之猜数字游戏

    编程思路图:

     

    运行结果:

     

     

     

     

    源代码:

    package com.zhiyou100;

    import java.util.Random;

    import java.util.Scanner;

    public class MyGame {

    public static void main(String[] args) {

    int max = 100;

    int min = 1;

    int count = 0;

    boolean value =true;

    while(value) {

     int trueKey = (int)(Math.random()*max+min);

     int userKey =0;

    while(true) {

    System.out.println("相信学习的力量 相信奋斗的力量");

    System.out.printf(String.format("我在心里想了一个数,它在%s~%s之间,看看你能几次猜中?",min,max));

     System.out.println();

     Scanner scanner = new Scanner(System.in);  

     boolean error = true  

    while(error) {

      try {

       System.out.print("你猜:");

       userKey = scanner.nextInt();

       System.out.println();     count++;

    if (trueKey>userKey) {       

    System.out.println("你猜的数字太小了!");

    }else if(trueKey<userKey) {   

    System.out.println("你猜的数字太大了!");

        }else {                      

    System.out.printf(String.format("恭喜你,你猜对了!你一共猜了%d",count));

         error=false;

    }

     } catch (Exception e) {

    System.out.print("你輸入有誤,請重新輸入!");scanner.nextLine();

     }  

    }

    break;  

    }

    System.out.println("退出请输入 q,再玩一次请回车");

    Scanner scanner2 = new Scanner(System.in);

    String shuRu = scanner2.nextLine();

        if (shuRu.equals("q")) {

         value =false;

          System.out.println("nihao");

        }

    }

    System.out.println("游戏结束");   

    }

    }

    九、Java输入易错区

    问题:Scanner对象输入时,方法nextLine()会清空回车键。如果前面输入调用的方法非nextLine(),例如nextInt(),nextDouble()等方法;则不会扫描到末尾敲的回车,导致缓冲区遗留了回车键,后面调用nextLine()时读取这个遗留的回车,扫描到回车后这次输入直接结束,而没有输入内容,类似于跳过。方法nextLine()的会读取缓冲区剩余的部分,如果缓冲区有剩余内容就会直接读取输出。
    解决方法:在调用nextInt(),next(),nextDouble()等方法后,后面要先写一个scanner.nextLine();来扫描清空掉这个回车,再使用nextLine()来输入。

    实例演示:本例中price是int类型,输入一个整型按回车符后,后面定义为String类型的test则直接读取了这个回车符,而直接结束了,因此需要添加一条语句。

    Scanner scanner = new Scanner(System.in);

    int price =scanner.nextInt();

    //添加的语句:scanner.nextLine();

    String test =scanner.nextLine();

     

     

     

  • 相关阅读:
    五个Metro UI 风格的网页设计
    cocos2dx学习资料(转)
    Python性能鸡汤
    7款很棒的 HTML5 视频播放器
    优秀的后台管理界面设计案例分享
    Task的理解(转)
    超棒的20款javascript工具提示条(tooltips)类库(转)
    Xcode 证书生成、设置、应用(转)
    分享17个漂亮的电子商务网站(转)
    强烈免费25款商务logo设计模板(转)
  • 原文地址:https://www.cnblogs.com/yangxiansen/p/7860059.html
Copyright © 2020-2023  润新知