2.2 编写简单的程序
double radius;//declare radius
double area;//declare area;
//asign a radius
radius = 20;
//compute area
area = 3.14159 * radius * radius;
//display results
System.out.println("The area for the circle of radius" + radius + "is" + area);
+ 号有两种含义:一种表示加法,另一种用于字符串的连接(合并)。如果一个字符串和数值连接,数值将转化成字符串 然后再和另一个字符串连接。
tip:在源代码中,字符串不能换行。为了改正错误,可以将字符串分成几个单独的子串,然后用连接操作符(+)将它们合并;
2.3 从控制台读取输入
从控制台读取输入,使得程序可以获取用户的输入
可以使用Scanner类从控制台获取输入
System.out:标准输出设备; System.in:标准输入设备
为了执行控制台输出,可以使用println 方法在控制台上显示基本数据类型或字符串;为了获取控制台输入,可以Scanner类创建一个对象,以读取System.in 的输入:Scanner input = new Scanner (System.in);
可以调用nextDouble()方法读取一个double值:double radius = input.nextDouble();
import java.util.Scanner;//Scanner is in the jaba.util package
public class ExampleCode {
public static void main(String[] args) {
//creat a Scanner object
Scanner input = new Scanner (System.in);
//prompt the user to input three numbers
System.out.print("enter three numbers");
double number1 = input.nextDouble();
double number2 = input.nextDouble();
double number3 = input.nextDouble();
//compute average
double average = (number1 + number2 + number3) / 3;
//displat result
System.out.println("The average of " + number1 + " " + number2 + " " + number3 + " is " + average);
}
}
Scanner类在包java.util里,它在第一行里被导入
特定导入:import java.util.Scanner
通配符导入(导入一个包里所有的类):import java.util.*
2.4标识符
标识符是由字母、数字、下划线、美元符号构成(不能以数字开头);区分大小写;使用完整的词汇更具有描述性
2.5 变量
变量用于表示某种类型的数据
声明变量的语法:数据类型 变量名;(变量使用前必须进行初始化和声明)
2.6 赋值语句和赋值表达式
变量名必须在=的左边
System.out.println(x = 1)是正确的,等价于:
x = 1;
System.out.println(x);
链式赋值:i = j = k = 1;等价于:
k = 1;j = k; i = j;
//可先收藏,后续会补充更新
2.7 命名常量
命名常量是表示不变值的标识符
由final(关键字)修饰
必须在同一条语句对常量进行声明和赋值
常量中的所有字母都要大写
语法:final 数据类型 常量名 = 值;
例:final double PI = 3.1415926;
2.8 命名习惯
使用小写字母命名方法和变量。若有多个单词,使用驼峰命名(第一单词小写,后面每个单词的首字母大写:numOfStudents)
类名中首字母大写(System)
常量所有字母大写,单词间用下划线连接
2.9 数值数据类型和操作
从键盘读取数值:
Scanner input = new Scanner(System.in);
System.out.println("Enter a byte value:");
System.out.println("Enter a short value:");
short shortValue = input.nextShort();
System.out.println("Enter a int value:");
int intValue = input.nextInt();
System.out.println("Enter a long value:");
long longValue = input.nextLong();
System.out.println("Enter a float value:");
float floatValue = input.nextFloat();
System.out.println("Enter a double value:");
double doubleValue = input.nextDouble();
当除法的两个操作数都是整数时,除法的结果是商,小数部分被截去
浮点数除法,其中至少一个数是浮点数
求余数,只有当被除数是负数是,结果才为负
public class DisplayTime {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter an integer for seconds:");
int seconds = input.nextInt();
int minutes = seconds / 60;
int secondsRemain = seconds % 60;
System.out.println(seconds + " seconds = " + minutes + " minutes + " + secondsRemain + " seconds");
}
}
指数运算:Math.pow(a,b);//a的b次方
2.10 数值型字面值
整型字面量的默认类型为int,为了表示一个long类型的整型字面量,需要在其后面添加 l 或L,(以927073013 必须写成927073013L 或 927073013l)
浮点型字面量的默认类型为double,可以在后面添加字母L或l表示该字面值为float型值
Java允许在一个数值型字面量中间用_(必须在数字中间)分隔两个数字:long value = 232_45_4519;(而_45和 45_ 是错误的)
科学计数法:用E或e(前为底数,后为指数)
2.11 JShell
JShell是用于快速对表达式求值以及执行语句的命令行工具
支持单个Java语句并执行,可立即查看结果,无需写完整的类
此类功能成为REPL(读取-计算-打印循环),即输入表达式和语句后立即计算和执行,并立即显示结果。
打印变量:直接输入变量名x 或 System.out.println(x);
/vars(列出所有变量名) /edit (编辑输入的代码) /exit(退出)
在JShell中,若没有为值指定变量名,将自动创建一个变量
示例:显示当前时间
调用System.currentTimeMillis()方法返回当前时间(是从1970年1月1日零点到现在的毫秒数)
public class ShowCurrentTime {
public static void main(String[] args){
//以格林尼治标准时间来显示当前时间
long totalMilliseconds = System.currentTimeMillis();
long totalSeconds = totalMilliseconds / 1000;
long seconds = totalSeconds % 60;
long totalMinutes = totalSeconds / 60;
long minutes = totalMinutes % 60;
long totalHours = totalMinutes / 60;
long hours = totalHours % 24;
System.out.println("current time is "+ hours + ':' + minutes + ':' + seconds + " GMT");
}
}
2.16 数值类型转换
会自动将整型转换成浮点型
自动扩大一个类型,但是必须显示完成缩小类型操作(强制转换)
注意:强制类型转换不改变被转换的变量
double d = 4.5873;
int i = (int)d;//i = 4;d = 4.5873;d 还是double类型
截取保留两位小数:(int)(d * 100) / (100.0);
四舍五入保留两位小数:(int)(d * 100 + 0.5) / 100.0;