Java基础---第四天

教课流程:

  位运算符:两个整数型数据交换位置--中间变量、位异或运算[ ^ ]

  三元运算符--if语句【数据键盘录入】

  switch语句

总结: 

1:运算符

(1)位运算符

^ : 一个数据对同一个数据^两次,结果还是数据本身。[异或]

举例:a ^ b ^ b = a

(2)条件运算符

格式:

条件表达式?表达式1:表达式2

执行流程:

根据条件表达式返回的是true还是false,决定结果是什么。

如果是true,就把表达式1作为结果。

如果是false,就把表达式2作为结果。

举例:

int a = 100;

int b = a > 50 ? 200 : 100;

请问b的值?200

2:面试题

(1)请用最有效率的代码写出2乘以8

2<<3  //位运算

(2)请交换两个变量。

int a = 10;

int b = 20;

开发:临时变量

int temp = a;

a = b;

b = temp;

面试:位^运算符

a = a ^ b;

b = a ^ b;

a = a ^ b;

3:if语句

(1)用于做判断使用的。

常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。

(2)格式:

A:第一种格式

if(条件表达式)

{

语句体;

}

执行流程:

如果条件表达式为true,就执行语句体;

否则,什么都不执行。

   B:第二种格式

    if(条件表达式)

   {

     语句体1;

    }

      else

     {

    语句体2;

      }

    执行流程:

   如果条件表达式为true,就执行语句体1;

   否则,就执行语句体2;

     特殊:

    可以和条件表达式在某些情况下进行替换。

   一般是在赋值的情况下可以。

   举例:

     获取两个数中的最大值。

      int a = 10,b = 15,c = 23;

      int max = (a>b)?((a>c)?a:c):((b>c)?b:c);

  C:第三种格式

    if(条件表达式1)      //条件表达式1和条件表达式2等没有严格的关系,范围的表达式建议书写完整

    {

语句体1;

    }

  else if(条件表达式2)

    {

语句体2;

    }

     ...

     else

     {

语句体n;

    }

     执行流程:

如果条件表达式1为true,就执行语句体1;

如果条件表达式2为true,就执行语句体2;

...

否则,就执行语句体n;

  D:注意事项

   a:什么时候时候哪一种if语句。

第一种格式在判断条件为一种情况下使用。

第二种格式在判断条件为两种情况下使用。

第三种格式在判断条件为多种情况下使用。

   b:每一种if语句其实都是一个整体,如果有地方执行了, 其他的就不执行了。

   c:如果if或者else里面控制的语句体是一条语句,是可以省略大括号的,但是,如果是控制多条语句,就必须写上大括号。

     建议:永远写上大括号。

     d:大括号和分号一般不同时出现。

  E:作用域

     所有变量的定义只在它所属的大括号内有效。

    (3)案例:

A:根据键盘录入的成绩,判断等级。

B:根据键盘录入的月份,输出该月份所对应的季节。

4:switch语句

(1)用于做选择使用的。一般用于几个常量的判断。

switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。

所以,针对几个常量的判断,一般选择switch语句。

(2)switch语句的格式:

switch(表达式)

{

case 值1:

语句体1;    //语句体可以是多条语句,不用加括号

break;

case 值2:

语句体2;

break;

case 值3:

语句体3;

break;

...

default:

语句体n;

break;

}

A:针对格式的解释

switch:表示这里使用的是switch语句,后面跟的是选项。

表达式:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是字符串

case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。

case后面的值是不能够重复的。

break:

switch语句执行到这里,就结束了。

default:

当所有的case和表达式都不匹配的时候,就走default的内容。

它相当于if语句的else。一般不建议省略。

B:执行流程

进入switch语句后,就会根据表达式的值去找对应的case值。

如果最终没有找到,那么,就执行default的内容。

C:注意事项:

a:default整体可以省略吗?

可以,但是不建议。

b:default的位置可以放到前面吗?

可以,但是不建议。

c:break可以省略吗?

可以,但是不建议。

default在最后,break是可以省略的。

case后面的break可以省略,但是结果可能有问题。

d:switch语句什么时候结束呢?

就是遇到break或者执行到程序的末尾。

(3)案例:

A:根据键盘录入的日期(1-7),输出对应的星期日期。

 1 /**
 2     需求:根据输入数据,判断星期
 3 */
 4 import java.util.Scanner;
 5 class DataDemo
 6 {
 7     public static void main(String[] args)
 8     {
 9         Scanner sc = new Scanner(System.in);
10         System.out.println("请输入待查询的数字1——7:");
11         int data = sc.nextInt();
12
13         if(data>7 ||data<0)
14         {
15             System.out.println("输入错误数字,请重新输入!");
16             data = sc.nextInt();
17         }
18         switch(data)
19         {
20             case 1:
21                 System.out.println("星期一");
22                 break;
23             case 2:
24                 System.out.println("星期二");
25                 break;
26             case 3:
27                 System.out.println("星期三");
28                 break;
29             case 4:
30                 System.out.println("星期四");
31                 break;
32             case 5:
33                 System.out.println("星期五");
34                 break;
35             case 6:
36                 System.out.println("星期六");
37                 break;
38             case 7:
39                 System.out.println("星期天");
40                 break;         //         /*
41             default://此处default完全没有必要,在switch语句前,已经对输入数据进行了处理。
42                 System.out.println("输入错误数字!");
43                 break;         //*/
44         }
45
46         switch(data)
47         {
48             case 1:
49             case 2:
50             case 3:
51             case 4:
52             case 5://多个case公用同一段代码,可以一起使用
53                 System.out.println("工作日");
54                 break;
55             case 6:
56             case 7:
57                 System.out.println("周末");
58                 break;
59         }
60
61     }
62 }

B:根据键盘录入的月份,输出该月份所对应的季节。

 1 /**
 2     功能需求:
 3     请根据给定的月份,输出对应的季节。
 4
 5     春:3,4,5
 6     夏:6,7,8
 7     秋:9,10,11
 8     冬:1,2,12
 9
10     键盘输入:
11         三种方式:String[]接受参数,标准输入输出流IO,Scanner
12     Scanner的使用:
13         1、导入包:import java.util.Scanner;
14         2、创建Scanner对象:Scanner sc = new Scanner(System.in);
15         3、调用对象方法,获取键盘输入int型数据:
16         int month = sc.nextInt();
17 */
18
19 import java.util.Scanner;
20 //导入包
21 class  IfDemo
22 {
23     public static void main(String[] args)
24     {
25         //创建Scanner对象
26         Scanner sc = new Scanner(System.in);
27         System.out.println("请输入月份1-12:");
28         //调用Scanner对象方法,获取输入数据
29         int month = sc.nextInt();
30
31         if(month >=3 && month <6)
32         {
33             System.out.println(month+"月是春季  ~_~");
34         }
35         else if(month >=6 && month <9)
36         {
37             System.out.println(month+"月是夏季  ~_~");
38         }
39         else if(month >=9 && month <11)
40         {
41             System.out.println(month+"月是秋季  ~_~");
42         }            //12月是一个特例,大小比较不好放置
43         else if(month >=1 && month <3 || month ==12)
44         {
45             System.out.println(month+"月是冬季  ~_~");
46         }
47         else
48         {
49             System.out.println("输入错误季节 ~_~");
50         }
51
52
53         //因为月份相对较少,可以使用逐个列举的方式
54     }
55 }
56
57
58 /*
59 总结:
60     当前程序主要三个考虑点:
61     1,if语句的使用,尤其是第三种的嵌套;
62     2,Scanner类实现键盘响应;
63     3,程序安全性的考虑,12月的放置,以及输入错误数据的考量。
64 */

5:Scanner的使用

(1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。

(2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:

A:导包

import java.util.Scanner;

B:创建对象,封装键盘录入

Scanner sc = new Scanner(System.in);

C:调用方法,获取数据

int number = sc.nextInt();

时间: 2024-10-20 06:20:29

Java基础---第四天的相关文章

深入Java基础(四)--哈希表(1)HashMap应用及源码详解

继续深入Java基础系列.今天是研究下哈希表,毕竟我们很多应用层的查找存储框架都是哈希作为它的根数据结构进行封装的嘛. 本系列: (1)深入Java基础(一)--基本数据类型及其包装类 (2)深入Java基础(二)--字符串家族 (3)深入Java基础(三)–集合(1)集合父类以及父接口源码及理解 (4)深入Java基础(三)–集合(2)ArrayList和其继承树源码解析以及其注意事项 文章结构:(1)哈希概述及HashMap应用:(2)HashMap源码分析:(3)再次总结关键点 一.哈希概

复习java基础第四天(集合)

List 代表一个元素有序.且可重复的集合,集合中的每个元素都有其对应的顺序索引 List 允许使用重复元素,可以通过索引来访问指定位置的集合元素. List 默认按元素的添加顺序设置元素的索引. List 集合里添加了一些根据索引来操作集合元素的方法: 另外: List 额外提供了一个 listIterator() 方法,该方法返回一个 ListIterator 对象, ListIterator 接口继承了 Iterator 接口,提供了专门操作 List 的方法: boolean hasPr

java基础(四章)

java基础(四章) 一.             switch结构(开关语句)的语法 switch(表达式 ){ ------- [dream1]类型为int.char case  常量1 :    ---------[dream2]case 结构可以有多个 //语句块1 break;---------[dream3]程序跳出switch结构 case  常量n:---------[dream4]常量的值不能相同 //语句块n break; default :---------- [dream

Java 基础(四)| IO 流之使用文件流的正确姿势

为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既然是流动也就会有方向,有入方向和出方向.举个上传文件的栗子,现在有三个对象,文件.应用程序.上传的目标地址(服务器).简化的上传文件有两步: 应用程序读文件

Java基础复习(四)

4 集合框架      Collection:  |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引.元素可以重复.    |--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素.必须保证元素唯一性. 1,添加: add(object):添加一个元素 addAll(Collection) :添加一个集合中的所有元素.  2,删除:  clear():将集合中的元素全删除,清空集合. remove(obj) :删除集合中指定的对象.注意:删除成功,集合的长度会改

04 java基础第四天

第四天 将大的程序逻辑化成自己一小步 数组是多个相同类型数据的结合,实现对这些数据的统一管理. 数组中的元素可以是任何数据类型,包括基本类型和应用类型. 声明数组的格式 声明数组的格式 1,数据类型[]数组名 2,数据类型 数组名[] 注意:下标的取值范围:0-----数组长度-1 //静态初始化 /初始化时,指定元素的值,由系统确定长度 int[] arr = new int[]{1,2,3,5}; /* * 数组常见问题: * 1.数组下标越界异常 * java.lang.ArrayInde

大数据Java基础第四天作业

第一题: class BinDemo{     public static void main(String[] args){         //左移:首位符号位 一定会移动掉,因此没有(有|无)符号位移动一说.         byte plus_left = 9;         byte minus_left = -9;         System.out.println(plus_left << 2);//0000 1001 => 0010 0100 = 36        

Java基础第四天总结——Java基础语法——程序流程控制

目录: 一.程序流程控制 二.顺序结构 三.分支语句1:if-else结构 四.分支语句2:switch-case结构 五.循环结构 六.循环结构1:for循环 /*--------------------------黄金分割线----------------------------------*/ 一.程序流程控制 > 顺序结构 ● 自上逐行向下执行 >分支结构 ● 根据条件,选择性执行某段代码 ● 有if-else和switch-case两种分支语句 >循环结构 ● 根据循环条件,重

Java 基础(四):从面试题看String

字符串介绍 String类是java.lang包中的一个类,是我们日常中使用的非常多的一个类,它不是基础数据类型,底层实现是字符数组来实现的: /** The value is used for character storage. */ private final char value[]; String类是由final修饰的,所以是无法被继承的,一旦创建了String对象,我们就无法改变它的值.因此,它是线程安全的,可以安全地用于多线程环境中. public final class Stri