02-基本程序设计

02-基本程序设计

  • 2.1 引言

    • 学习程序设计基础技术,以进行问题的求解。
  • 2.2 编写简单的程序

    • 在源代码中,字符串常量不能跨行,因此,下面的的语句就会导致错误。

      package chapter01;
      
      public class Code_10 {
          public static void main(String[] args){
              System.out.println("Introduction to Java Progranmming,a
                      by xxx");
          }
      }
      
      

      那么正确的代码是:

      package chapter01;
      
      public class Code_10 {
          public static void main(String[] args){
              System.out.println("Introduction to Java Progranmming," +
                      "by xxx");
          }
      }
      
      
  • 2.3 从控制台读取输入

    • 可以使用Scanner类从控制台输入。Java使用System.out来表示标准输出设备,用System.in来表示标准输入设备。

    • 示例:

      Scanner input=new Scanner(System.in);
      
    • 可以使用nextDouble()方法来获取一个double类型的值。当然这样类似的方法有很多(next()、nextInt()、nextFloat()…),不仅仅是这一种。至于这几种方法之间的区别,点击这里查看

      package chapter01;
      
      import java.util.Scanner;
      
      public class Code_10 {
          public static void main(String[] args){
              Scanner input=new Scanner(System.in);
              double s=input.nextDouble();
          }
      }
      
      
    • Scanner类位于java.util包中,在第3行导入,第6行创建了一个Scanner对象,如果第6行用java.util.Scanner代替Scanner的话,import是可以直接省略的。

    • 这里顺便讲述一下print和println方法。print和println方法功能类似,两者的不同之处在于:当显示字符串之后,println会将光标移至下一行,而print则不会这样。

    • 有两种类型的import语句:(二者的执行效率基本一样)

      • 明确导入:是在import语句中指定单个的类。

        import java.util.Scanner;
        
      • 通配符导入:是指通过使用星号(*)作通配符,导入一个包中所有的类。

        import java.util.*;
        
  • 2.4 标识符

    • 标识符的规则:
      • 标识符是由字母、数字、下划线(_)和美元符号($)构成的字符序列。
      • 标识符必须以字母、下划线(_)和美元符号($)开头,不能以数字开头。
      • 标识符不能是保留字
      • 标识符不能是true、false、null。
      • 标识符可以为任意长度。
    • Java是区分大小写的。
    • 不要用字符$命名标识符。习惯上,字$只用在机器自动产生的源代码中。
  • 2.5 变量

    • 在赋值给变量之前,必须声明变量。方法中声明的变量在使用之前必须被赋值。
  • 2.6 赋值语句和赋值表达式

    • 在Java中,将等号(=)作为赋值操作符。赋值语句的语法如下:

      variable=expression;//(变量=表达式)
      
    • 可以在表达式中使用变量。变量还可以同时出现在赋值操作符=的两边。

      x = x + 1;
      
    • 在赋值语句中,左边变量的数据类型必须与右边变量的数据类型兼容。例如,int x=1.0是错误的,因为1.0是double类型的,这样的数据是不能直接赋值给int类型的变量的。

  • 2.7 命名变量

    • 命名变量是一个代表不变值的标识符。

    • Java中常量也称为final修饰的变量。下面是生命常量的语法:

      final datatype CONSTANTNAME=value;
      
    • 常量必须在同一条语句中生声明和赋值。习惯上,常量中的所有字母都是大写的。

    • 使用常量的三大好处:

      • 1、当一个值多处使用的时候,不必重复输入。
      • 2、如果必须修改常量值,只需在源代码中的一个地方做改动。
      • 3、给常量赋一个描述性的名字会提高程序的可读性。
  • 2.8 命名习惯

    • 使用小写字母命名变量和方法,如果一个命名包含多个单词,就讲他们连在一起,第一个单词的字母小写,而后面的每个单词的首字母大写。例如,变量numberOfStudents。这样的命名风格称为驼峰命名法
    • 类名中的每个单词的首字母大写。
    • 常量中的所有字母大写,两个单词间用下划线连接。例如,常量PI和常量MAX_VALUE。
    • 命名类时不要选择Java库中已经使用的名称。
  • 2.9 数值数据类型和操作

    • 2.9.1 数值类型
      • Java使用四种类型的整数:byte、short、int和long。
      • Java使用两种类型的浮点数:float和double。
    • 2.9.2 从键盘读取数值
    Scanner对象的方法
    方法描述
    nextByte()读取一个byte类型的整数
    nextShort()读取一个short类型的整数
    nextInt()读取一个int类型的整数
    nextLong()读取一个long类型的整数
    nextFloat()读取一个float类型的数
    nextDouble()读取一个double类型的数
    • 2.9.3 数值操作符
      • 当除法的操作数都是整数时,除法的结果就是整数,小数部分被舍去。为了实现浮点数的除法,其中一个操作数必须是浮点数。

      • 操作符%通常用在正整数上,实际上他也可以用于负整数和浮点值。只有当被除数是负数时,余数才是负的。

        package chapter01;
        
        public class Code_10 {
            public static void main(String[] args){
                System.out.println(3+1);
                System.out.println(3.0+1);
                System.out.println(3-1);
                System.out.println(3.0-1);
                System.out.println(3*1);
                System.out.println(3.0*1);
                System.out.println(3/2);
                System.out.println(3.0/2);
                System.out.println(-3.0/2);
                System.out.println(3.0/-2);
                System.out.println(3%2);
                System.out.println(3%-2);
                System.out.println(-3%2);
            }
        }
        
        

        结果显示:

        4
        4.0
        2
        2.0
        3
        3.0
        1
        1.5
        -1.5
        -1.5
        1
        1
        -1
        
        Process finished with exit code 0
        
        
    • 2.9.4 幂运算
      • Math.pow(a,b)
  • 2.10 数值型字面值
    字面值是程序中直接出现的常量值。例如,下面的语句中34和0.305都是字面值。

    int numberOfYears = 34;
    double weight = 0.305;
    
    • 2.10.1 整型字面值
      • 默认情况下,整型字面值是一个十进制整数。要表示一个二进制整数字面值,在数字面前使用0b或者0B(零B);要表示一个八进制整数字面值,在数字前使用0(零);而要表示一个十六进制整数字面值,在数字前使用0x或者0X(零X)。例如:

        package chapter01;
        
        public class Code_10 {
            public static void main(String[] args){
                System.out.println(0B1111);//Displays 15
                System.out.println(07777);//Displays 4095
                System.out.println(0XFFFF);//Displays 65535
            }
        }
        
        
      • 为了提高可读性,Java允许在一个数值型字面值的两个数字间使用下划线。例如,下面的字面值是正确的:

        long ssn = 232_45_4519;
                long creditCardNumber = 2324_4545_4519_3415L;
        

        然而,45_和_45是不正确的,下划线必须在两个数字之间的。

    • 2.10.2 浮点型字面值
    • 2.10.3 科学计数法
      • 浮点型字面值也可以用a x 10^b形式的科学计数法表示。
  • 2.11 表达式求值以及操作符优先级

    • 操作符的优先级规则用于确定计算的次序:首先计算乘法、除法和求余计算。如果表达式包含若干个乘法、除法和求余操作符,可按照从左到右的顺序执行。最后执行加法和减法运算。如果表达式中包含若干个加法和减法操作符,则按照从左到右的顺序执行。
  • 2.12 示例学习:显示当前时间

    • 可以通过调用System.currentTimeMillis()返回当前时间。

      package chapter01;
      
      public class ShowCurrentTime {
          public static void main(String[] args){
              long totalMilliseconds = System.currentTimeMillis();
              long totalSeconds = totalMilliseconds / 1000;
              long currentSecond = totalSeconds % 60;
              long totalMinutes = totalSeconds / 60;
              long currentMinute = totalMinutes % 60;
              long totalHours = totalMinutes / 60;
              long currentHour = totalHours % 24;
              System.out.println("Current time is " + currentHour + ":" + currentMinute + ":" + currentSecond + " GMT");
          }
      }
      
      
  • 2.13 增强赋值操作符

    • 操作符+ 、-、*、/、%可以结合赋值操作符形成增强操作符。
    简捷赋值操作符
    | 操作符 |名称 |示例|等价于| |--|--|--|--| | += | 加法赋值操作符 | i += 8 | i =i + 8| | -=| 减法赋值操作符| i -= 8 | i =i - 8 | | *=| 乘法赋值操作符| i *= 8 | i =i * 8 | | /=| 除法赋值操作符| i /= 8 |i =i / 8 | | %= | 求余赋值操作符| i %= 8 | i =i % 8 |
    • 在增强操作符中是没有空格的。例如,+ =应该是+=。
  • 2.14 自增和自减操作符

    • 自增操作符(++)和自减操作符(–)对变量进行加1和减1的操作。
    • i++读为i加加,i–读为i减减,这些操作符分别称为后置自增操作符和后置自减操作符,因为操作符++和–放在变量后面。
    • ++i将i加1,–i将i减1。这些操作符称为前置自增操作符和前置自减操作符。
  • 2.15 数值类型转换

    • 总是可以将一个数值赋给支持更大数值范围的类型的变量,如果不进行类型转换,就不能将一个值赋给范围较小的类型的变量。将范围较小的类型转换为范围更大的类型称为扩展类型,而将范围较大的类型转换为范围较小的类型称为缩小类型。Java将自动扩展为一个类型,但是缩小类型必须显示完成。

    • 使用类型转换时必须小心,丢失的信息也许会导致不精确的结果。

    • 类型转换不改变被转换的变量。

      package chapter01;
      
      public class Try {
          public static void main(String[] args){
              double sum=1;
              System.out.println((int)sum);
              int s=1;
              System.out.println((byte)s);
          }
      }
      
      
    • Java中,x1 op= x2形式的增强赋值表达式实现为x1 =(T)(x1 op x2),这里T是x1的类型。

      package chapter01;
      
      public class Try {
          public static void main(String[] args){
              int sum = 0;
              sum += 4.5;
              System.out.println(sum);//答案是4
              sum = (int)(sum + 4.5);
              System.out.println(sum);//答案是8
          }
      }
      
      
  • 2.16 软件开发过程

    • 软件开发生命周期是一个多阶段的过程,包括需求规范、分析、设计、实现、测试、部署和维护。
  • 2.17 示例学习:整钱兑零

    package chapter01;
    
    import java.util.Scanner;
    
    public class ComputerChange {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            
            System.out.print("Enter an amount in double, for example 11.56: ");
            
            double amount = input.nextDouble();
            
            int remainAmount = (int)(amount * 100);
            
            int numberOfOneDollars = remainAmount / 100;
            remainAmount = remainAmount % 100;
            
            int numberOfOneQuarters = remainAmount / 25;
            remainAmount = remainAmount % 25;
            
            int numberOfDimes = remainAmount / 10;
            remainAmount = remainAmount % 10;
            
            int numberOfNickels = remainAmount / 5;
            remainAmount = remainAmount % 5;
            
            int numberOfPennies = remainAmount;
            
            System.out.println("Your amount " + amount + "consists of");
            System.out.println(" " + numberOfOneDollars + " dollars");
            System.out.println(" " + numberOfOneQuarters + "quarters");
            System.out.println(" " + numberOfDimes + "dimes");
            System.out.println(" " + numberOfNickels + "nickels");
            System.out.println(" " + numberOfPennies + "pennies");
        }
    }
    
    
  • 2.18 常见错误和陷进

    • 常见错误1:未声明、未初始化的变量和未使用的变量

    • 常见错误2:整数溢出

    • 常见错误3:舍入错误

    • 常见错误4:非预期的整数除法

    • 常见陷进:冗余的输入对象
      这是不好的代码:

      Scanner input = new Scanner(System.in);
              System.out.print("Enter an integer: ");
              int v1 = input.nextInt();
              
              Scanner input1 = new Scanner(System.in);
              System.out.print("Enter a double value: ");
              double v2 = input.nextDouble();
      

      重写代码之后应该是这样的:

      Scanner input = new Scanner(System.in);
              System.out.print("Enter an integer: ");
              int v1 = input.nextInt();
              System.out.print("Enter a double value: ");
              double v2 = input.nextDouble();
      
  • 编程小习题:

    • 1、在这里插入图片描述
    package chapter02;
    
    import java.util.Scanner;
    
    public class Code_01 {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            System.out.print("Enter a degree in Celsius: ");
            double temprature = input.nextDouble();
            double chinaTemprature = temprature * (9.0/5) + 32;
            System.out.format("%.1f Celsius is %.1f Fahrenheit",temprature,chinaTemprature);
        }
    }
    
    
    • 2、在这里插入图片描述
    package chapter02;
    
    import java.util.Scanner;
    
    public class Code_06 {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            System.out.print("Enter a number between 0 and 1000: ");
            int number = input.nextInt();
            int ge = number % 10;
            int more1 = number / 10;
            int shi = more1 % 10;
            int more2 = more1 / 10;
            int sum = more2 + ge + shi;
            System.out.format("The sum of digits is %d",sum);
        }
    }
    
    
    • 3、在这里插入图片描述

      package chapter02;
      
      import java.util.Scanner;
      
      public class Code_13 {
          public static void main(String[] args){
              Scanner input = new Scanner(System.in);
              System.out.print("Enter the monthly saving amount: ");
              double save = input.nextDouble();
              for(int i = 0;i < 5;i++){
                  save = (100 + save) * (1 + 0.00417);
              }
              System.out.format("After the sixth month, the account value is $%.2f",save);
          }
      }
      
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值