java基础复习(三)

一、运算符

  1.算术运算符

    1) 加法(+) 加法   正号  字符串拼接

    2) 减法(-) 减法 负号

    3) 乘法 (*) 乘法

    4) 除法(/) 除法

      •     整数(小数)相除的例子

            10/3 =3;  10.0/3=3.33333…

      •      0/0
      •      0.0/0.0

            结果是NaN ,任何的NaN都不等于自己(面试题)

      •     1.0/0.0

            Infinity,表示无穷大

            

    5) 取模(%)

            

  2.自增自减

  ++(自增)     --(自减)

     自增自减只能够用于 变量,不能用于常量

     自增自减运算的优先级  比  算术运算符  高

    1)基本的使用

      1)


int  i=3;  // 表示把3赋值给变量i

i++;      //表示变量i的值加1,i的值变成4

++i;      //表示变量i的值加 1,i的值变成5

        

      2)

        


int i=3;

int j = i++;

i等于多少,j等于多少?

        

      3)

        


int i=3;

int j = ++i;

i等于多少,j等于多少?

        

        区别:

          把整个表达式看成是一个整体。

          如果变量名在前面,那么整个表达式的值就是原来值不变。

          如果变量名在后面,那么整个表达式的值就是原来的值加

    2)常见的面试题

      1.

        

      2.

        

      3.

        

    3)练习

      1.


int i=5;

i++;

System.out.println("i="+i);//6

++i;

System.out.println("i="+i);//7

int a=++i;

System.out.println("a="+a);//8 i=8

a = a++;

System.out.println("a="+a);//8

a = ++a;

System.out.println("a="+a);//9

      2.

    4)总结

       不要把单独的  自增自减   和 有表达式的自增自减搞混淆了

      


i++;

int j =i++;

    

       一定要弄清楚计算规则,表达式的值   和  具体计数器的值的变化是什么

  3.赋值运算   

    =    +=     -=     *=     /=    %=

    1) 赋值符号的运算顺序?    

      从右到左,把符号右边的值赋值到左边的变量中

    2) 上面 后五个分别看成是一个整体: 例如 += 看成是一个符号,不要看成两个;


int i=3;

i +=2;// 表示把2 累加到变量 i 中

i -=1;

i *=3;

i /=3;

i%=3;

   特例:


short s = 3;

s += 2;   ----》OK

short  s = 3;

s = s+2;//结果值是int,int不能自动转换为short

  

  4.比较运算符

  ==    !=     >    <    >=    <=    instanceof

    规律:比较运算的结果是一个布尔类型的值(true 或false);   

  • 举例:

    定义一个布尔表达式,打印输出

  • 特别说明:instanceof 是判断一个对象是否属于某种类型

是否可以用于我们之前学习的基本数据类型(回忆一下我们之前学习的数据类型除了基本数据类型 还有什么?)

  

  

  5.逻辑运算 

    &    |     &&     ||   ^    

  是应用于多个条件的组合判断。

    •   示例说明:

    例如小明参加2个学科的考试 java php

    1) java 和 php 同时考100分,奖励 欧洲十日游

    伪代码描述:java==100 并且 php==100

    2) java 和php,只要有一门考100分,奖励 源代码优惠券2000元一张

     伪代码描述:java==100 或者 php==100

  • 逻辑运算的两边结果值都必须是什么类型?  布尔

  &   :两边都为true ,结果为true

  |    : 只要有一边为true,结果为true

  && :   两边都为true ,结果为true

  ||    : 只要有一边为true,结果为true

  ^    : 两边不一样,结果为true ,否则为false,举个例子打印一下

  !  : 逻辑非,举个例子打印一下

  

  

  &&  ||   和   & |    区别?

    1)  & | 既可以充当逻辑运算,也可以是位运算符,怎么区分是逻辑运算还是位运算?

     根据表达式的结果是否为 布尔类型 来判断

    2) 双与  双或  具有短路行为  什么意思?

    举个例子 上面小明的考试的成绩 要求是两科都为100分,看到第一科低于100分之后没有必要再看第二科成绩

    代码表示:Java = 100  && php = 100   (java只考了5分)

    如果逻辑运算左边的值能够确定整个逻辑运算表达式的值,那么右边就不执行了,短路了。

     && 何时短路 ?    左边表达式结果为false

     ||  何时短路 ?    左边表达式结果为true

  • 思考:如何验证短路行为?

  提示:

    右边表达式用  自增自减,例如 ++i = 5

    或者使用一个编译正常,运行报错的表达式,例如 1/0

     

     常见错误

      例如:判断一个整数的变量 a里面的数据  在0-100之间

       正确写法: a>0   &&  a<100

      错误写法:   0<  a < 100  (java没有这种语法,不支持)

  6.位运算符 

  &    |    ^     ~    <<      >>     >>>

   位运算就是 二进制的位进行运算。

  •   示例:比如计算 125+176 ,从数学的角度是怎么计算的?
  •   同理,位运算也类似,比如 3&4

  可以把1看成是true,把0看成是false

  &  :与 位运算,两边为1,结果为1

  |   :或 位运算,有一个为1,结果为1

  ^  :  异或,两边不一样,就为1,否则为0

  ~  :  取反,1变成0  ,0 变成1

  << :  向左位移动,例如1<<3

  >> :   向右位移动,例如8>>2

  >>>:  无符号向右移动

  

  

    注意:正数的补码,反码,原码 都一样;

    负数的反码:符号为不变,其他位取反;

    负数的补码:它的反码+1;

  7.三目运算符  

    语法格式: X ? Y : Z

      1) 上面的三目运算整体看成是一个表达式,应该有一个结果值

      2) X ?  布尔类型的值或者结果为布尔类型的表达式

      3) Y  Z  ? 一般来说数据类型相同的值或者表达式

      4) 运算的规则?

      X 为true,就是 Y 的结果值 ( 冒号前面的表达式的值)

      X为false,就是Z的结果值 ( 冒号后面的表达式的值)

      x ? y : z

    注意:  不要受  ? 和    :  的干扰,它们只是一个固定语法格式而已

    示例1: 找出两个整型变量中的最大值

    

    示例2:判断一个数是 奇数 还是 偶数

    

    示例3: 例如小明学习java 考试成绩  >=60 显示 非常优秀   否则输出 还有很大的提升空间。

    

二、条件选择结构

  

  • 举例: 加个条件 打印一句话。

if(1==2){

System.out.println(“今晚请大家吃大餐!”);

}

  • 示例

智能机器人,开发一套软件,负责智能上厕所(应该获取硬件设备上的性别标识)。

1.


if(判断条件){

满足 判断条件(true),就执行此大括号里面的内容

}

2.


if(判断条件A){

满足 判断条件A(true),就执行此大括号里面的内容,后面的else不会执行

}else{

前面的 判断条件A(false),执行else大括号里面的内容

}

3.


if(判断条件A){

满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

}else if(判断条件B){

满足 判断条件B(true),就执行此大括号里面的内容

}

4.


if(判断条件A){

满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

}else if(判断条件B){

满足 判断条件B(true),就执行此大括号里面的内容

}else{

前面的if  esle-if 都不满足条件(false),执行此大括号里面的内容

}

5

else if 可以有多个


if(判断条件A){

满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行

}else if(判断条件B){

满足 判断条件B(true),就执行此大括号里面的内容,后面的else-if else 不执行

} else if(判断条件C){

满足 判断条件C(true),就执行此大括号里面的内容,后面的 else 不执行

}else{

前面的if  esle-if 都不满足条件(false),执行此大括号里面的内容

}

  • 总结
  • if 后面的大括号如果不写,表示执行是后面的第一行代码(不建议这样写)

  

  • 练习
  1. 求出2个变量中的最大值
  2. 判断一个数是否是3的倍数

     ①  int a = 10;

      a %3 == 0 ?”就是3的倍数”:”不是”

       ②if(a %3 == 0 ){

      System.out.println(”就是3的倍数”)

      }else{

      System.out.println(”不是3的倍数”);

      }

  3.小明java 考试成绩  按等级分   A B C  D ,判断变量值在不同的范围的,打印输出不同的等级


90~100 A等。

80-89 B等。

70-79 C等。

60-69 D等。

60以下E等。

    int score = 99;

    if(score>=90 && score <=100){

}else if(score>=80 && scorce <90 ){

}else if(score>=70 && scorce <80 ){

}else if(score>=60 && scorce <70){

}else{

}

三、条件选择结构-switch

作用和if差不多,只是语法结构不一致而已。

  语法 :


switch(变量或者一个表达式){

case 变量的可能值1: 功能语句;break;

case 变量的可能值2: 功能语句;break;

case 变量的可能值3: 功能语句;break;

........

default:功能语句;break;

}

  示例 : 假设定义一个变量表示星期,然后使用switch结构,根据不同星期打印做不同的事情。

  

  

---------------------------------

  特殊的一些情况:

  1)  case的顺序(包括default) 可以是任意的,           但是建议先按照case的值的大小顺序排列,default放最后

  2) 执行顺序,是先依次找完所有的case,如果都不匹配才会执行default

  3)  break的作用,结束当前的这个switch结构

    •   从第一个匹配的条件开始,到第一个break之间的所有case判断失效
    • 在执行功能语句时,如果到末尾都没有break,自动结束,不会再循环回去。
    • 最后一个break 可以省略掉,但是建议还是写上
    • 再举例 一个 打印 春夏秋冬的例子?

      

  5) ase后面的值应该和变量的类型一致;

  6)  switch中的()中的变量地方类型可以是哪些?

  java5之前   :  byte short char int

  java5支持   :   enum枚举  (面向对象部分学习了之后回头测试)

  java7支持   :  String 类型

四、循环的作用

  

  • 每一天重复干的事情?

睡觉 吃饭 耍朋友

  • 比如酷狗音乐的播放模式?

单曲循环 列表循环

  • 再比如说打印10句相同的内容?

  

Java中提供了3  种循环?

while  do-while  for

  1.上面的3中循环功能都是一样的,只是语法结构不一样,很多时候是可以相互交换的, 既然都差不多,为什么有多个呢?

    不同的循环结构,有不同的使用场景和优势

  2.在写循环代码之前呢?

    1) 要做什么事情

    2) 次数

    3) 要写循环,必须知道循环的语法

五、while的基本用法

  

while

语法格式:


while(条件(布尔类型的)){

// 循环体à具体做什么事情

}

  • 执行流程

1.一个循环可能会循环执行多次

  第一次判断条件true,继续执行

  第二次判断条件true,继续执行

  第三次判断条件true,继续执行

  。。。。。

  直到第n次判断条件false,终止循环

2.为什么第一次 第二次是true 。。。 n次就是false?

  • 条件可以是一个常量

  举个例子(条件为布尔值true)

  

  • 一般我们使用一个变量来充当条件循环,

  举个例子:播放一首歌,循环播放10次

    1) 定义一个整数的变量记录循环的次数

    2) 循环一次,自增一次

    3) 根据次数进行判断

  

3.写一段代码计算1-10的和。

  1) 传统的做法

    1+2+3+4+5+6+7+8+9+10

    如果要求计算1-100 , 1-1000 这样写是否合理?

     可以动态的获得每一个加数

  2) 使用while循环,每循环一次,把取到的加数累加起来

  3) 在循环的外面定义一个变量用来放计算的和的值

  

练习

  1. 求出10以内2的倍数的数字 和 个数。
  2. 求出 1-10的所有偶数的和

六、do-while基本用法

l do-while    先执行一次,再判断

语法格式:


do{

// 循环体

}while(条件);

举例:循环10次

  • 和while区别?

  1) 定义一个 布尔变量,默认值false

  2) 将这个布尔变量放在 while  和 do-while 条件中,看有什么区别

  

  

原文地址:https://www.cnblogs.com/funkyd/p/10216134.html

时间: 2024-10-31 04:11:56

java基础复习(三)的相关文章

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

一.Collection常用的方法: Java 集合可分为 Set.List 和 Map 三种体系: Set:无序.不可重复的集合. List:有序,可重复的集合. Map:具有映射关系的集合. Collection 接口是 List.Set 和 Queue 接口的父接口, 该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合: import java.util.ArrayList; import java.util.Collection; import j

Java基础复习笔记系列 四

Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时,不能指定其长度.不同于C 数组的小标可以是整型常量或整型表达式. .length方法是显示数组的长度:数组.length;String.length();一个是属性,一个是方法.注意区分. 2.数组的内存分析? Array a[]; a = new Integer(15); /*这个a在栈中,在堆

Java基础复习㈥ 内存分配

1.方法区 类的全限定名.直接超类的全限定名.该类是类或者接口.访问修饰符.直接超接口全限定名: 运行时常量池.字段.方法.静态变量.到类装载器的引用.到类class的引用 2.栈内存 局部变量区.操作数栈.帧数据区 3.堆内存 存放由new创建的对象和数组 *栈内存和堆内存 栈存取速度比堆快,仅次于寄存器,栈数据可以共享.栈中主要存放一些基本类型的变量和对象句柄 4.本地方法栈内存 5.String ① String str1 = "abc"; String str2 = "

Java基础复习笔记系列 五 常用类

Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String s2 = “hello”:结论:s1 == s2. 字符串常量放在data区. 3. String s3 = new String("hello"); String s4 = new String("hello");结论:s3 != s4.但s3.equals(s4).

Java基础复习笔记系列 七 IO操作

Java基础复习笔记系列之 IO操作 1. 2.

Java基础复习笔记系列 十 GUI

Java基础复习笔记系列之 GUI 1. 2.

Java基础复习笔记系列 九 网络编程

Java基础复习笔记系列之 网络编程 1. 2.

Java基础复习笔记系列 八 多线程编程

Java基础复习笔记系列之 多线程编程 1. 2.

Java基础复习笔记系列 六 容器

Java基础复习笔记系列之 容器 1. 2.

java基础(三章)

java基础(三章) 一.基本if结构 1.流程图 l  输入输出 l  判断和分支 l  流程线 1.1              简单的if条件判断 if(表达式){            //表达式为true,执行{}中的代码 } 1.2              简单的if条件判断 if(表达式){            //表达式为true,执行这里 }else{            //表达式为false,这行这里 } 说明:如果if或else后面,有且仅有一行代码,{ }可以省略