运算符

算术运算符

听其名而知其意,就是用于计算的,java中常用的是:

  • +   加
  • -    减
  • *    乘
  • /    除
  • %  取模,取余——%可以用来得到两个数相除的余数

小练习——写一个java程序判断两个数是否能够整除

public class Demo1	//公共类必须和文件名相同
{
public static void main (String []args)
{
int a=2;
int b= 4;
if(b%a == 0)    //=代表赋值 ==代表相等
{
System.out.println("可以整除!");
}
else
{
System.out.println("不能整除!");
}
}
} 运行结果:
D:\myJavaDemo>javac -encoding UTF-8 Demo1.java D:\myJavaDemo>java Demo1
可以整除!
  • ++  自加 —— a++ —— a = a + 1
  • --  自减 —— b-- —— b = b - 1

实例:前自加和后自加的区别

public class Demo1
{
public static void main (String []args)
{
int a = 1;
int b = ++a;
int c = 1;
int d = c++;
System.out.println(b);
System.out.println(d);
}
} 输出结果:
2
1

  结论:总之就记住 ++ 在 a 前面,a的值就会先则增加。-- 也是相同的

int b = ++a;
{
a = a + 1;
b = a;
}
int b = a++;
{
b = a;
a = a+1;
}

  问:这段代码的结果是多少

public class Demo1
{
public static void main (String []args)
{
int a = 3;
int b = ++(++a)--;
System.out.println(b);
}
}

  答案是:

D:\myJavaDemo>javac -encoding UTF-8 Demo1.java
Demo1.java:12: 错误: 意外的类型
int b = ++(++a)--;
^
需要: 变量
找到: 值
1 个错误 答案是会报错, 可见自加自减运算符并不是随心所欲的进行自加自减的 为什么会报错呢?
因为++a在进行自加后,就处于一个不稳定状态,编译器不知道a是什么,确定不了a是一个小数还是一个字符或者什么的。
报错说的错误就是我不知道,我不知道就是个意外。
所以自加自减运算符要跟着一个确定的值
  • +=   左加
  • -=   左减
  • /=   左除
  • *=   左乘
  • %=   左取模  

小例子

a += 90  ——>  a = a + 90
b += a ——> b = b + a
a -= 90 ——> a = a - 90
a *= 90 ——> a = a * 90
a /= 90 ——> a = a / 90
a %= 90 ——> a = a % 90

关系运算符  

  • ==   等于
  • >    大于
  • >=   大于等于
  • <    小于
  • <=   小于等于
  • !=   不等于

练习:请编写一个程序,改程序可以接受两个数(可以使整数,也可以是小数),并判断这两个数是大于?小于?还是等于?

import java.io.*;
//InputStreamReader 和 BufferedReader 都在这个包里面,所以要把这个包引进来 public class Demo1
{
public static void main (String []args)
{
//从控制台接受两个数
try
{
//输入流,从键盘接收数
InputStreamReader isr = new InputStreamReader(System.in); //system.in代表标准输入,就是键盘
BufferedReader br = new BufferedReader(isr);
//这些内容到控制台中才会详细讲解 System.out.println("请输入一个数"); //提示 //从控制台读取一行数据
String a1=br.readLine();
//控制台不管输入的是数还是字符串,他都认为是字符串,所以要用String接受 System.out.println("请输入第二个数"); //提示
String a2=br.readLine(); //把String -> float
float num1 = Float.parseFloat(a1);
float num2 = Float.parseFloat(a2);
if (num1 > num2)
{
System.out.println("第一个大");
}
if(num1 == num2)
{
System.out.println("相等");
}
if(num1 < num2)
{
System.out.println("第二个大");
} }catch(Exception e)
{
e.printStackTrace();
}
}
}

  注意如果出现这样的报错信息——找不到符号,说明编译器找不到这个类,就要意识到自己有没有把包含这个类的包导进去

D:\myJavaDemo>javac -encoding UTF-8 Demo1.java

Demo1.java:19: 错误: 找不到符号
InputStreamReader isr = new InputStreamReader(System.in);
^
符号: 类 InputStreamReader
位置: 类 Demo1

逻辑运算符

  逻辑运算符——用于进行逻辑判断  

  • ||   或
  • &&   与
  • !    非 —————— 把结果进行取反

案例

public class Demo1
{
public static void main(String args[])
{
int a=90; int b = 90;
if(a==b||a>8){System.out.println("ok1");}
b--;
if(a>b&&a>8){System.out.println("ok2");}
if(!(a<=b)){System.out.println("ok3");}
}
} 输出结果:
ok1
ok2
ok3

三大流程控制——顺序控制,分支控制,循环控制

顺序控制

  程序从上到下,从左向右,依次执行

示例:

public class Demo1
{
public static void main(String args[])
{
int a = 7;
System.out.println("a="+a);
System.out.println("hello!");
a++;
System.out.println("a="+a);
System.out.println("qwq");
a++;
System.out.println("a="+a);
}
}

  

分支控制

  让程序有选择的执行,分支控制有三种——单分支,双分支,多分支

单分支结构

if(条件表达式)
{
语句;
} //条件表达式可以很长,但最终结果是个布尔值就行

双分支结构

if(条件表达式)
{
语句;
}
else
{
语句;
}

多分支结构一

if(条件表达式)
{
语句;
}
else if(条件表达式)
{
语句;
}
else if(条件表达式)
{
语句;
}
else
{
语句;
}

小例子——就是多个分支中选择一个走出来

public class Demo1
{
public static void main(String args[])
{
int a = 17;
if(a>18)
{
System.out.println("a>18");
}
else if(a>10 && a<18)
{
System.out.println("a>10 && a<=18");
}
else{
System.out.println("others");
}
}
}

多分支结构二——开关结构

switch(条件表达式)
{
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
.........
case 常量n;
语句n;
break;
default:
语句;
break;
}

  小例子:

public class Demo1
{
public static void main(String args[])
{
char c = 'a';
switch(c)
{
case 'a':
System.out.println("今天星期一");
case 'b':
System.out.println("今天星期二");
default:
System.out.println("不知道星期几");
}
}
} 输出结果:
今天星期一
今天星期二
不知道星期几 因为没有加break语句,所以都会输出

  加break语句

public class Demo1
{
public static void main(String args[])
{
char c = 'a';
switch(c)
{
case 'a':
System.out.println("今天星期一");
break;
case 'b':
System.out.println("今天星期二");
break;
default:
System.out.println("不知道星期几");
}
}
} 输出结果:
今天星期一

注意1:如果case后面的值相同,就会出现这样的报错——标签重复

Demo1.java:11: 错误: case 标签重复
case 'a':
^
1 个错误

注意2:switch后的 条件表达式的数据类型,应该和case后的常量类型一致

import java.io.*;
public class Demo3
{
public static void main (String args[]) throws Exception
{
String str;
int a;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
str = buf.readLine();
a=Integer.parseInt(str);
switch(a)
{
case a<=100&&a>=90:System.out.println("优");break;
case a<90&&a>=80:System.out.println("良");break;
case a<80&&a>=70:System.out.println("中");break;
case a<70&&a>=60:System.out.println("及格");break;
case a<60&&a>=0:System.out.println("不及格");break;
default:System.out.println("input error");break;
}
}
} 报错:
D:\myJavaDemo>javac -encoding UTF-8 Demo3.java
Demo3.java:14: 错误: 不兼容的类型: boolean无法转换为int
case a<=100&&a>=90:System.out.println("优");break;
^
Demo3.java:15: 错误: 不兼容的类型: boolean无法转换为int
case a<90&&a>=80:System.out.println("良");break;
^
Demo3.java:16: 错误: 不兼容的类型: boolean无法转换为int
case a<80&&a>=70:System.out.println("中");break;
^
Demo3.java:17: 错误: 不兼容的类型: boolean无法转换为int
case a<70&&a>=60:System.out.println("及格");break;
^
Demo3.java:18: 错误: 不兼容的类型: boolean无法转换为int
case a<60&&a>=0:System.out.println("不及格");break;
^
5 个错误
//逻辑运算符和关系运算符最后返回的是个boolean(布尔类型),而case后面需要int类型

  tips:

InputStreamReader isr = new InputStreamReader(System.in);
buf = new BufferedReader(isr) 上面的代码和下面的代码是相同的,之前的代码是用的上面的这种形式 buf = new BufferedReader(new InputStreamReader(System.in));

注意3:switch中可用的数据类型主要是:byte , short , int , char , enum(枚举类型)

public class Demo4
{
public static void main(String args[])
{
int a = 20.1;
switch(a)
{
case 12.3:System.out.println("12.3");break;
case 4.5:ystem.out.println("4.5");break;
default:System.out.println("其它");
}
}
} 报错:
D:\myJavaDemo>javac -encoding UTF-8 Demo4.java
Demo4.java:5: 错误: 不兼容的类型: 从double转换到int可能会有损失
int a = 20.1;
^
Demo4.java:8: 错误: 不兼容的类型: 从double转换到int可能会有损失
case 12.3:System.out.println("12.3");break;
^
Demo4.java:9: 错误: 不兼容的类型: 从double转换到int可能会有损失
case 4.5:ystem.out.println("4.5");break;
^
Demo4.java:9: 错误: 程序包ystem不存在
case 4.5:ystem.out.println("4.5");break;
^
4 个错误

循环控制

循环控制就是让你的代码可以循环执行

后续

Java学习日记——基础篇(三-上)基本语法之运算符和流程控制的更多相关文章

  1. Java学习日记基础篇(三-下)——流程控制之循环控制

    循环控制 for循环 语法: for(循环初值;循环条件;步长) { 语句; //循环体 } 例子: import java.io.*; public class Demo4 { public sta ...

  2. Java学习日记基础篇(六)—— 抽象类、接口、final

    抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 public class test1 { pub ...

  3. Java学习日记——基础篇(一)常识

    JAVA简介 Java的标准 Java是一种语言,一个平台包含JavaSE.JavaEE.JavaME三个版本 JavaSE标准版(属于Java的基础部分,可以开发C/S构架的桌面应用程序) Java ...

  4. Java学习日记基础篇(七) —— 数组、排序

    数组 为什么要有数组? 案例:一个养鸡场有六只鸡,他们的体重分别为3kg,5kg,1kg,3.4kg,2kg,50kg.请问这六只鸡的总体重和平均体重是多少? public class test5 { ...

  5. Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法

    面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...

  6. Java学习日记基础篇(九) —— 集合框架,泛型,异常

    集合框架 有事我们会需要一个能够动态的调整大小的数组,比如说要添加新员工但是数组已经满了,并且数组的大小是在定义的时候定死的,所以我们就需要一个能够动态调整大小的数组或者用链表解决,而java中提供了 ...

  7. Java学习日记——基础篇(二)基本语法

    变量 变量和常量是程序处理的两种基本数据对象,变量是程序的基本组成单位 变量的目的就是确定目标并提供存放空间 public class Hello { public static void main( ...

  8. Java学习日记基础篇(八) —— 二进制、位运算、位移运算

    二进制 二进制是逢2进位的进位置,0,1是基本算符 原码反码补码 在基本数据类型那里,有详细解释 二进制的最高位数是符号位:0表示整数,1表示负数 正数的原码,反码,补码都一样 负数的反码 = 它的原 ...

  9. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

随机推荐

  1. SQL Server2008 查找用户登录日志

    select loginname,accdate from sys.syslogins

  2. Go 操作 Mysql(一)

    关于 Go 的标准库 database/sql 和 sqlx database/sql 是 Go 操作数据库的标准库之一,它提供了一系列接口方法,用于访问数据库(mysql,sqllite,oralc ...

  3. swift 有哪些学习资源

    Swift有哪些优秀的学习资源呢? 首先要推荐的当然是官方的资料了. 这个地址里放的是苹果官方为开发者提供的Swfit学习资源:https://developer.apple.com/swift/re ...

  4. java ajax上传文件

    包括案例 1.springmvc上传 2.ajax上传 3.form表单与文件上传 - 1. http://localhost:8080/ 第一种:springmvc上传- 2. http://loc ...

  5. 前端框架开始学习Vue(一)

    MVVM开发思想图(图片可能会被缩小,请右键另存查看,图片来源于网络)   定义基本Vue代码结构   1 v-text,v-cloak,v-html命令 默认 v-text没有闪烁问题,但是会覆盖元 ...

  6. Hive笔记及配置

    Hive 基于Hadoop的数据仓库工具: 将结构化的数据文件,映射为一张表,并提供类SQL查询功能: 本质:将HQL转化为MapReduce程序: Hive处理的数据存储在HDFS: Hive分析数 ...

  7. 前端HTML基础和head部分

    一.SOCKET服务器与浏览器交互 CS模式 -->  BS模式 CS模式逐渐向BS模式转移,底层都是socket客户端 浏览器给服务器发送请求 --> 服务器收到请求 --> 服务 ...

  8. 使用华为云+GitHub搭建自己的博客

    1.搭建自己博客首先创建GitHub账号 在GitHub官网上创建一个账号:   我的账号地址是 : https://github.com/SueKayTian 2.GitHub账号创建好之后,客户端 ...

  9. Django 使用form组件对文件上传

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. linux网络编程之socket编程(六)

    经过一个国庆长假,又有一段时间没有写博文了,今天继续对linux网络编程进行学习,如今的北京又全面进入雾霾天气了,让我突然想到了一句名句:“真爱生活,珍惜生命”,好了,言归正传. 回顾一下我们之间实现 ...