安卓开发之Java基础(3)——运算符、流程控制语句

Hello,大家晚上好,小超最近一直在坚持着学Java,每天都在学习中做笔记,今天正好来将前天学的Java运算符和流程控制语句来总结一下,就当做复习了。

另外,如果在CSDN上格式或者模板比较难看的话,大家可以在GitHub上下载或者clone我的笔记,里面内容详细(听视频的时候疯狂的敲字!)

一、数据类型补充的问题:

数据类型转换之默认转换:

byte , short , char ——int ——long ——float——double

long:8个字节

float:4个字节

那么为什么float反而在long后面呢?

A:     它们底层的存储结构不同

B:     float表示的数据范围比long范围还要大:

        Long:2^63-1

        Float:      3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^114 > 2^63-1

①Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言中的字符占用两个字节

②Java语言采用的是Unicode编码。

二、运算符:

  1. 运算:对变量和常量进行操作的过程叫作运算
  2. 运算符:对常量和变量进行操作的符号称为运算符
  3. 操作数:参与运算的数据称为操作数
  4. 用运算符把常量或者变量连接起来符号java语法的师资就可以称为表达式,不同运算符连接的式子体现出来的是不同类型的表达式

1、算术运算符:

①OperatorDemo.java

②运算符的优先级:

看一下例题:
int x = 4;
		int y = (x++) + (++x) + (x*10);
		System.out.println("x:"+x+",y:"+y);
			//4+6+6*10 = 70

2、赋值运算符:

基本赋值运算符:=

扩展放入赋值运算符:+=、-=、*=、/=、%=

易错题1:
	short s = 1 , s = s + 1; short s = 1 , s += 1;
	上面的代码有没有问题?如果有,哪里有问题?
第一个是之前的精度损失(先s+1先换成了int类型),但是第二个运算没有问题,s += 1等价于s = (s的数据类型)(s + 1)

3、比较运算符:

特点:
		无论你的操作是简单还是复杂,结果是boolean类型
下面这么写是有问题的:
		boolean flag = (a = b);
		System.out.println(flag);
	a = b首先表示的是把b的值赋给a,a就成为int类型了,所以会显示跟之前一样的精度损失,但是修改到:boolean flag = (a == b);就是正确的了

4、逻辑运算符:

1、逻辑运算符用于连接布尔型表达式,在java中不可以写成3 < x <y,应该写成x > 3 & x < 6
2、“&”和“&&”的区别:
    ①单&时,左边无论真假,右边都进行运算;
    ② 双&时,如果左边为真,右边参与运算,如果左边是假,那么右边不参与运算(具有短路效果),开发中常用的运算符是||、!、&&
    ③|和||的区别同理,双或时,左边为真,右边不参与运算
3、异或(^)与或(|)的不同之处是:当左右都为true时,结果为false

5、位运算符:(&、|、^、~、>>、<<、>>>)

要做位运算,后弦要把数据转换为二进制

^的特点:某一个数据对另一个数据异或两次,该数本身不变——可以用来做加密算法

过程分析如下:

面试题:

①请自己实现两个整数变量的交换(没有明确指定数据的类型时默认是int型):

其实方法2和3类似的还可以乘除等等,最重要的是方法四,一句话搞定

左移、右移、>>>运算符的介绍,下面是分析:

2、	请用最有效的方式写出计算2乘以8的结果:
System.out.println(2 << 3);

6、三目运算符:

格式:(关系表达式)?表达式1:表达式2;

         如果条件为true,运算的结果就是表达式1

         如果条件为false,运算的结果就是表达式2

下面是一个demo例子:求x和y的最大值:

7、条件运算符的练习:

(1)、获取3个整数中最大值

(2)、判断两个数据是否相等

1、键盘录入数据:
(1)	键盘录入数据概述:
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,准备把数据改成键盘录入,提高程序的灵活性。
(2)	如何实现键盘录入数据呢?
导包(位置放在class定义的上面)
	Import java.util.Scanner;
创建对象:
	Scanner sc = new Scanner(System.in);
接收数据:
	Int x = sc.nextInt();

2、强化练习:
    键盘录入两个数据,并对这两个数据求和,输出其结果
	键盘录入两个数据,获取这两个数据中的最大值
	键盘录入三个数据,获取这三个数据中的最大值
	键盘录入两个数据,比较这两个数据是否相等

三、流程控制语句:

  1. 在一个程序执行过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响,所以,我们必须清楚每条语句的执行流程,而且很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能
    1、流程控制语句分类:
         顺序结构
            ①顺序结构概述:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次            
            执行,程序中大多数的代码都是这样执行的
    
            ②总的来说:写在前面的先执行,写在后面的后执行
    
            ③简单小例子:

     

2、选择结构(分支结构)
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码
Java语言提供了两种选择结构语句:
    If语句:
    If语句的三种格式:
        第一种格式:if(关系表达式){语句体}
    执行流程:
        首先判断关系表达式看其结果是true还是false
        如果是true就执行语句体
        如果是false就不执行语句体

 看一下简单的小例子:

                                         

注意事项:

A:比较表达式无论是简单还是复杂,结果必须是boolean类型
B: if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略

C: 一般来说:有左大括号就没有分号,有分号就没有左大括号

                                 

If语句格式2:

If(比较表达式){语句体1}else{语句体2}
执行流程:首先计算比较表达式的值,看其返回值是true还是false,如果是true就执行语句体1,否则执行语句体2
(else后面是没有表达式的)

If语句格式2的练习:
    A:获取两个数据中较大的值
    B:判断一个数据是奇数还是偶数:

  1. 我们前面说过的三元运算符,它根据比较判断后,给出的也是两种结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下是可以相互转换的
        三元运算符的操作都可以使用if语句改进,反之不成立
        什么时候不成立呢?
            当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有 
            一个结果返回,而输出语句却不能作为一个返回结果。
    
    

     

If语句第三种格式:——适合做多个判断
If(关系表达式1){语句体1}else if(关系表达式2){语句体2}……else{语句体n+1;}
执行流程:
    首先判断关系表达式1看其结果是true还是false
    如果是true就执行语句体1
    如果是false就继续判断关系表达式2看其结果是true还是false
    如果是true就执行语句体2
    如果是false就即系判断关系表达式……看其结果是true还是false
    ……
    如果没有任何关系表达式为true,就执行语句体(n+1)

 

下面是一个简单的demo小例子:

下面是一些练习:
键盘录入x的值,计算出y的值,y和x的关系满足:
    X >= 3           y = 2x + 1
    -1 <= x <3           y = 2x
    X <= -1         y = 2x – 1

      1. 键盘录入月份的值,输出季节:

                                                                 

欢迎关注微信公众号"空谷小莜蓝",大家一起努力,实验室快关门了,溜了溜了~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章