1. 计算机与编程语言
计算机语言
-
程序是用特殊的编程语言写出来表达如何解决问题的.
-
不是用编程语言来和计算机交谈, 而是用编程语言描述要求计算机如何做事情的过程或方法.
算法
-
我们要让计算机做计算, 就需要找出计算的步骤, 然后用编程语言写出来.
-
计算机做的所有的事情都叫做计算.
-
计算的步骤就是算法.
程序的执行
-
解释: 借助一个程序, 那个程序能试图理解你的程序然后按照你的要求执行.
-
编译: 借助一个程序, 就像一个翻译, 把你的程序翻译成计算机真正能懂的语言–机器语言–写的程序, 然后, 这个机器语言写的程序就能直接执行了.
2. 第一个Java程序
package hello;
public class HelloWorld {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World");
}
}
3. 变量与计算
package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("Hello!");
System.out.println("echo:" + in.nextLine());
}
}
-
读输入时
Scanner in = new Scanner(System.in);
必不可少. 输入完后IDE会自动补上:import java.util.Scanner;
. -
输入是以行为单位进行的, 行的结束标志就是按下了回车键. 在按下回车之前程序不会读到任何东西.
-
System.out.println(in.nextLine());
表明让in这个对象做读入下一行的动作, 结果交给System.out这个对象去打印一行, 所谓打印一行是因为用了println()
, 即在字符的末尾会有以回车作为行结束的动作, 如果此处使用print()
则不会产生回车. -
可以用
+
连接两个字符串形成更长的字符串, 当出现字符串+数
时, 数将自动被转换为字符串, 然后连接成更长的字符串, 如System.out.println("666 + 999 = " + 1655);
执行后输出结果为666 + 999 = 1655
.
package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
int price = 0;
int amount = 0;
Scanner in = new Scanner(System.in);
final int num = 2; // 购买商品的个数
System.out.print("请输入商品单价: ");
price = in.nextInt();
System.out.print("请输入已付金额: ");
amount = in.nextInt();
System.out.println("需要找零: " + (amount - price * num));
}
}
-
int price = 0;
定义了一个变量, 变量名为price, 类型为int, 并被初始化为0. 此处的 ‘=’ 是一个赋值运算符, 表示将其右边的值赋给左边的变量. Java是一种强类型语言, 所有的变量在使用之前必须定义或声明, 所有的变量必须具有确定的数据类型. 数据类型表示在变量中可以存放什么样的数据, 变量中只能存放指定类型的数据, 程序运行过程中也不会发生改变.- 注意: 当赋值发生在定义变量的时候, 就是变量的初始化. 虽然Java语言并没有强制要求所有的变量都在定义的地方做初始化, 但是要求所有的变量在第一次被使用 (如出现在赋值运算符的右边) 之前被赋值.
-
组合变量定义的时候, 也可以在这个定义中单独给单个变量赋初值, 如:
int a = 5, b = 6;
. 但是需要注意, 在int a, b = 5, c;
中, 仅有b被初始化了. -
price = in.nextInt()
要求in这个对象做读入下一个整数的动作, 读到的结果赋值给变量price. -
final是一个修饰符, 加在int的前面, 用来给这个变量加上一个final (最终的) 的属性. 这个fnal的属性表示这个变量的值一旦初始化, 就不能再修改了. 即我们通过关键字final, 在程序中定义了一个常量.
Tips: 程序要求读入多个数字时, 可以在一行输入, 中间用空格分开, 也可以在多行输入
4. 浮点数计算
浮点数
-
Java中两个整数的运算的结果只能是整数, 因此10 / 3 * 3的结果是整数值9.
-
所谓浮点数, 是指带小数点的数值.
-
当运算符的两边为整数和浮点数时, Java会将整数转换成浮点数, 然后进行浮点数的运算.
-
定义一个浮点数变量的方法是:
double <变量名>;
. double的意思是 “双” , 它本来是 “双精度浮点数” 的第一个单词, 人们它用来表示浮点数类型.
5. 运算优先级
所谓结合关系是指, 当某个表达式中所有运算符优先级相同时, 整个表达式是从左往右算还是从右往左算, 如a+b+c, 会先做a+b, a+b的结果再去加c. 其中还需注意, 赋值也是运算, 也有结果, 如a=6的结果就是a被赋予的值, 也就是6. 因此下面代码输出的结果是675:
package hello;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
int result = 10;
result = (result = result + 5) * (result = result * 3);
System.out.println(result);
}
}
如果想把一个浮点数的小数部分去掉, 变成整数, 可以采取类型强制转换, 不过需要注意的是, 强制类型转换只是从那个变量计算出了一个新的类型的值, 它并不改变原来那个变量, 无论是值还是类型都不改变. 并且, 强制类型转换的优先级高于四则运算. 因此, 下述代码的输出结果为: a=1.98,b=1.
package hello;
public class Hello {
public static void main(String[] args) {
// TODO Auto-generated method stub
double a = 1.98;
int b = (int) a;
System.out.println("a=" + a + ",b=" + b);
}
}