一、运算符

  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 条件中,看有什么区别

  

  

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

  1. Java基础复习(三)

    1. &和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则 ...

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

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  3. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  4. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  5. java基础复习记录

    java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...

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

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

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

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

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

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  9. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  10. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

随机推荐

  1. 透明的LISTVIEW

    .NET就是封装的太密了,有时很多时候让我们反而更麻烦,特别是COPY不到的时候,又不懂自已想的话,说土一点就是死路一条, 记得以前经常用一句话,C++支持,可C#他不支持啊!就这样安慰自已 其实做多 ...

  2. 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口

    印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...

  3. 谈谈vue双向数据绑定问题

    vue是MVVM模型,vueObserver 数据监听器,把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用Object.define ...

  4. eclipse 4.5 离线安装mybatis generator1.3.6卡在Install New Software的解决方法

    转载:https://blog.csdn.net/ssshen14/article/details/80004459 离线插件 下载:https://github.com/mybatis/genera ...

  5. scrapy xpath xpath('---').xpath('string(.)') 提取子元素全部文本

    product.xpath("div//div[@class='a-row a-spacing-mini'][1]/div[2]").xpath('string(.)')

  6. scrapy电影天堂实战(二)创建爬虫项目

    公众号原文 创建数据库 我在上一篇笔记中已经创建了数据库,具体查看<scrapy电影天堂实战(一)创建数据库>,这篇笔记创建scrapy实例,先熟悉下要用到到xpath知识 用到的xpat ...

  7. Git学习及使用

    一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...

  8. linux-批量修改目录下后缀shell

    #!/bin/bashcd /optrename .sh .shell *.shecho "后缀修改成功"

  9. Python笔记(二十)_多态、组合

    多态 对于函数中的变量,我们只需要知道它这个变量是什么类,无需确切地知道它的子类型,就可以放心地调用类的方法,而具体调用的这个方法是作用在父类对象还是子类对象上,由运行时该对象的确切类型决定,这就是多 ...

  10. postman的下载和使用

    postman的下载 官网:https://www.getpostman.com/downloads/ 创建账号或者用谷歌浏览器账号登录 登录之后,进行接口测试,这里请求百度为例,然后点击send,就 ...