博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础 - 第一章 计算
阅读量:6098 次
发布时间:2019-06-20

本文共 11307 字,大约阅读时间需要 37 分钟。

  hot3.png

#1.1 第一个Java程序

package my.hava.javabasis.lesson;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_1 {    public static void main(String [] args)    {        System.out.println("Hello World");    }}

程序输出

Hello WorldProcess finished with exit code 0

#1.2 用变量做计算 ##1.2.1 读输入 ###如何去读

package my.hava.javabasis.lesson;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("中文");        //读取用户输入        Scanner in = new Scanner(System.in);        System.out.println(in.nextLine());    }}

###课堂题目 每次输入的内容只有在按下回车(Enter)键之后才会被程序读到。

A.√
B.×
正确答案: A

package my.hava.javabasis.lesson;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("中文");        //读取用户输入        Scanner in = new Scanner(System.in);        System.out.println("echo:" + in.nextLine());        System.out.println(2+3+"=2+3=" + (2+3));    }}

程序输出

中文hello worldecho:hello world5=2+3=5Process finished with exit code 0

##1.2.2 变量

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("中文");        //读取用户输入        Scanner in = new Scanner(System.in);//        System.out.println("echo:" + in.nextLine());        int price = in.nextInt();        System.out.println("100-" + price + "=" + (100 - price));    }}

输出

中文33100-33=67Process finished with exit code 0

###题目 int price;

这句定义了一个变量
A.√
B.×
正确答案: A 你选对了

###变量定义

  • 变量定义的一般形式就是:
    • <类型名称> <变量名称>;

如下为例子

int price;int amount;int price,amount;

###变量的名称

  • 变量需要一个名字,变量的名字是一种“标识符”,意识是它是用来识别这个和那个的不同名字。
  • 标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,Java的关键字(有的地方叫它们保留字)不可以用做标识符。

###Java保留字 输入图片说明

###变量类型

  • int price = 0;
  • 这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。
  • Java是一种强类型语言,所有的变量在使用之前必须定义或者生命,所有的变量必须具有确定搞得数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

##1.2.3 赋值

###异常

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("中文");        //读取用户输入        Scanner in = new Scanner(System.in);//        System.out.println("echo:" + in.nextLine());        //变量初始化        int price = 0, amount = 0;        System.out.println(price);        price = in.nextInt();        System.out.println("100-" + price + "=" + (100 - price));    }}

输出异常

中文0priceException in thread "main" java.util.InputMismatchException	at java.util.Scanner.throwFor(Scanner.java:909)	at java.util.Scanner.next(Scanner.java:1530)	at java.util.Scanner.nextInt(Scanner.java:2160)	at java.util.Scanner.nextInt(Scanner.java:2119)	at my.hava.javabasis.lesson1.Lesson1_2.main(Lesson1_2.java:18)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:606)	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)Process finished with exit code 1

###代码

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("你好");        //读取用户输入        Scanner in = new Scanner(System.in);//        System.out.println("echo:" + in.nextLine());        //变量初始化        int amount = 100;        int price = 0;        System.out.println("[amount]:" + amount);        System.out.println("[price]:" + price);        price = in.nextInt();        System.out.println(amount + "-" + price + "=" + (amount - price));    }}

###题目 当amount的值为100,price的值为20,以下哪一种写法能输出:100-20=80

A.System.out.println("amount-price="+amount-price);

B.System.out.println(amount+"-"+price+"="+(amount-price));

C.System.out.println("amount-"+price+"="+amount-price);

D.System.out.println(amount-price=(amount-price)); 正确答案: B

###程序

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by zhanpeng on 2016/10/10. */public class Lesson1_2 {    public static void main(String [] args)    {        System.out.println("你好");        //读取用户输入        Scanner in = new Scanner(System.in);//        System.out.println("echo:" + in.nextLine());        //变量初始化//        final int amount = 100;        int amount = 100;        int price = 0;        System.out.println("[amount]:" + amount);        System.out.println("[price]:" + price);        System.out.println("请输入票面:");        amount = in.nextInt();        System.out.println("请输入金额:");        price = in.nextInt();        System.out.println(amount + "-" + price + "=" + (amount - price));    }}

输出结果

你好[amount]:100[price]:0请输入票面:100请输入金额:50100-50=50Process finished with exit code 0

##变量课件 ###读输入

Scanner in = new Scanner(System.in);System.out.println(in.nextLine());
  • 将第一行抄在笔记本上,任何需要读用户输入的程序都需要这行
  • 输入Scan之后,按下键盘上的Alt+/,让Eclipse自动为你补全必要的代码

###运行

  • 输入也在终端窗口中
  • 红色的方块表示程序正在运行
  • 输入时以行为单位进行的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序不会读到任何东西

###读入一行文字

  • System.out.println(in.nextLine());
  • 让in对象做读入下一行的动作,结果交给System.out这个对象进行打印

###字符串的+

  • 用来连接两个字符串形成更长的字符串
System.out.println("Hello" + " world.");//Hello world.System.out.println("Hello" + 2);//Hello2System.out.println("Hello" + 2 + 3);//Hello5System.out.println(2 + 3 + "Hello");//5Hello

###try

  • 在输出的时候加上文字表明是否回答而非单纯的重复

###找零计算

  • 输入一个表示应该付多少元的数字,比如12,它告诉你88,意思是如果你付100
Scanner in = new Scanner(System.in);int price = 0;price = in.nextInt();int change = 100 - price;System.out.println(change);

###变量

  • int price = 0;
  • 这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。
  • 变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中药记录用户输入的架构,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。

###变量定义

  • 变量定义的一般形式就是:
    • <类型名称> <变量名称>;

如下为例子

int price;int amount;int price,amount;

###变量的名字

  • 变量需要一个名字,变量的名字是一种“标识符”,意识是它用来识别这个和那个的不同的名字。
  • 标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,Java的关键字(有的地方叫它们保留字)不可以用做标识符。

###Java保留字

###quiz

  • 以下哪些标识符是符合规则的?
    • currency √
    • lastName √
    • fireplace √
    • _last_name√
    • xingming√
    • class×
    • goto×
    • 4ever×
    • time-machine×
    • Int√
    • $12×
    • 我是变量×

###赋值和初始化

  • int price = 0;
  • 这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。
  • price=0是一个式子,这里的=是一个赋值运算符,表示将=右边的值赋给左边的变量。

###赋值 和数学不同,a=b在数学中表示关系,即a和b的值一样;而在Java中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=b与b=a是等价的,而在Java中,两者的意思完全相反

###初始化 当赋值发生在定义变量的时候,就像程序中的第7行那样,就是变量的初始化。虽然Java语言并没有强制要求所有的变量都在定义的地方做初始化,但是要求所有的变量在第一次被使用(出现在赋值运算符的右边)之前被赋值

###变量初始化

  • <类型名称> <变量名称> = <初始值>;
  • int price = 0;
  • int amount = 100;
  • 组合变量定义的时候,也可以在这个定义中单独给单个变量赋值,如
  • int price = 0,amount = 100;

###插入

  • 写出以下变量的初始值:
    • int price,amount =100,age;

回答 price == 0,amount == 100,age == 0

###读整数

  • price = in.nextInt();
  • 要求in这个对象做读入下一个整数的动作,读到结果赋值给变量price
  • 如果用户输入的不是整数会怎样?
    会报如下异常
Exception in thread "main" java.util.InputMismatchException	at java.util.Scanner.throwFor(Scanner.java:864)	at java.util.Scanner.next(Scanner.java:1485)	at java.util.Scanner.nextInt(Scanner.java:2117)	at java.util.Scanner.nextInt(Scanner.java:2076)	at my.hava.javabasis.lesson1.Lesson1_2.main(Lesson1_2.java:22)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:498)	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

###表达式

  • "="是赋值运算符,有运算符的式子叫做表达式。
  • price=0;
  • change = 100 - price;

###try

  • 给程序增加一个int类型变量:bill,初始化为100。在计算change时,用变量bill代替100。
  • 这个变量在哪里定义合适?
    **回答:**环境变量并不充分,如果bill不在发生变更,则应该在class声明为类的static final变量。这样在JVM载入时默认会把100值载入。提高效率。

###变量类型

  • 这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0.
  • Java是一种强类型语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也

###常量

  • int change = 100 - price;
  • 固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)。
  • 更好的方式,是定义一个常量:
    • final int AMOUNT = 100;

###final

  • final是一个修饰符,加在int的前面,用来给这个变量加上一个final(最终的)的属性。这个final的属性表示这个变量的值一旦初始化,就不能再修改了。
    • int change = AMOUNT - price;
  • 如果你试图对常量做修改,把它放在赋值运算符的左边,就会被Java发现,指出为

###try

  • 让用户输入变量bill的值,而不是使用固定的初始值

###tips

  • 程序要求读入多个数字时,可以在一行输入,中间用空格分开,也可以在多行输入
  • 每次召唤in.nextInt(),它就等待用户输入一个整数

#1.3 表达式(浮点数、优先级和类型转换) ##浮点数 ###身高5尺7寸?

  • 美国人固执地使用英制计量单位,他们习惯用几尺几寸(英尺英寸)来报自己的身高。如果遇到一个美国人告诉你他是5英尺7,他的身高应该是一米几呢?
  • (5 + 7/12) * 0.3048 = 1.7018米

###计算身高的程序 - 问题代码

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by yanfa on 2016/10/10. */public class Lesson1_3 {    public static void main(String [] args){        int foot; //英尺        int inch; //英寸        Scanner in = new Scanner(System.in);        System.out.println("请输入身高:");        System.out.print("英尺:");        foot = in.nextInt();        System.out.print("英寸:");        inch = in.nextInt();        double result = (foot + inch/12) * 0.3048;        System.out.println("身高:" + result);    }}

错误输出

请输入身高:英尺:5英寸:7身高:1.524

###为什么是1.524

  • 因为两个整数的运算的结果只能是整数
    • 10/3 * 3= 9
  • 10和10.0在Java中是完全不同的数
  • 10.0是浮点数

###课堂测试 在Java中10/3的结果是?

正确答案:3

###计算身高的程序 - 正确代码 **注意:**在做除法的时候先进行强制类型转换

package my.hava.javabasis.lesson1;import java.util.Scanner;/** * Created by yanfa on 2016/10/10. */public class Lesson1_3 {    public static void main(String [] args){        int foot; //英尺        int inch; //英寸        Scanner in = new Scanner(System.in);        System.out.println("请输入身高:");        System.out.print("英尺:");        foot = in.nextInt();        System.out.print("英寸:");        inch = in.nextInt();        double result = (foot + (double)inch/12) * 0.3048;        System.out.println("身高:" + result);    }}

输出结果

请输入身高:英尺:5英寸:7身高:1.7018

###浮点数

  • 带小数点的数值。浮点这个词的本意就是小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在Java中不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。

###程序改进

  • (foot +inch/12) * 0.3048;
  • (foot +inch/12.0) * 0.3048;
  • 当浮点数和整数放到一起运算时,Java会将整数转换成浮点数,然后进行浮点数的运算。

###double

  • inch是定义为int类型的变量,把int换成double,我们就把它改为double类型的浮点数变量。
  • double的意思是双,本来是双精度浮点数的第一个单词,人们用来表示浮点数类型

###浮点运算的精度

  • 浮点计算是有误差的:
    • System.out.println(1.2 - 1.1);
      输出结果
0.09999999999999987

###整数

  • 整数类型不能表达有小数部分的数,整数和整数的运算结果还是整数。计算机里会有纯粹的整数这种奇怪的东西,是因为整数的运算比较快 ,而且占地方也小。其实人们日常生活中大量做的还是纯粹整数的计算,所以整数的用处还是很大的。

###讨论

  • 如果把程序里的inch变量换成double类型,那句语句后面的in.nextInt()还正确吗?

**回答:**正确,Java程序会自动从低精度转换成高精度。

###随堂

  • 用一个变量meter来记录身高换算的结果,最后在System.out.println()里面输出这个meter变量的值。 ##运算符优先级 输入图片说明

###单目运算符

  • 只有一个算子的运算符: +,-
int a = 10;int b = -20;System.out.println(a * -b);

###结合关系

  • 一般自左向右
  • 单目+ - 和赋值=是自右向左
result = a = b = 3 + c;result = 2;result = (result = result * 2) * 6 * (result = 3 + result);//上面的式子先计算了左边的result=,得到result=4,然后在计算右边的result=,得到result=7。则最终结果是168

###插入

  • 6 + 5/4 -2=5
  • 2 + 2 * (2 * 2 - 2)%2/3 = 2
  • 10 + 9 * ((8 + 7) % 6) + 5 * 3 % 3 * 2 + 3 = 40
  • 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10 = -627

###强制类型转换

  • 身高是1.524米
  • System.out.println((foot + inch /12) * 0.3048 * 100);

###随堂测试 以下哪句能把浮点数转换成整数?

A. (int)12.4

B. int(12.4)

C. int 12.4

D. 12.4=int 正确答案: A 你选对了

###强制类型转换

  • 如果想把一个浮点数的小数部分去掉,编程整数
int i = 32 / 3.0;int i = (int)(32 / 3.0);
  • (类型)值

###身高?

  • System.out.println( (int)((foot
  • inch / 12) * 0.3048 * 100));

###强制类型转换

double b = 10.3;int a = (int)b;
  • 只是从那个变量计算出了一个新的类型的值,它并不改变那个变量,无论是值还是类型都不改变

###强制类型转换

double a = 1.0;double b = 2.0;int i = (int)a /b;//int i = (int)(a/b);
  • 强制类型转换的优先级高于四则运算
double a = 1.0;double b = 2.0;double d = (double) (a /b );

转载于:https://my.oschina.net/hava/blog/756539

你可能感兴趣的文章
shell 文件的归档和压缩
查看>>
★一张图弄明白从零维到十维
查看>>
正则表达式文档
查看>>
试用了一下SpringBoot+AngularJS的工程生成器JHipster
查看>>
JAXB方式读写XML文件
查看>>
SeciLog 1.3.2 发布,增加了日志审计编辑,优化了告警等功能
查看>>
实现简易贪吃蛇
查看>>
保持Qt程序中GUI的响应流畅
查看>>
mock服务器
查看>>
mybatis转义字符表
查看>>
拥抱 Android Studio 之一:从 ADT 到 Android Studio
查看>>
java绝对路径及相对路径总结
查看>>
谈下抽象类和接口
查看>>
Google C++ Style Guide
查看>>
Scala中的Map使用例子
查看>>
HashMap的实现原理笔记
查看>>
最快渲染方案
查看>>
Python基础要点总结
查看>>
go语言结构体入门
查看>>
virtualbox安装ghost xp
查看>>