IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java学习记录day04(运算符与选择结构) -> 正文阅读

[Java知识库]Java学习记录day04(运算符与选择结构)

Java(03)

Java基础语法

运算符

Java中的 运算符分为算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符几种。

算术运算符

包括+、-、*、/、%、++、–

‘/’的使用

15000/10000 = 1

注:在Java中两个同类型的数运算,结果为同类型,又因为他们默认都是int类型,所以就是1

double a=15000/10000;  //1.0
double a=15000f/10000f;  //1.5
'%'的使用

‘%’称为取余运算符或称为取模运算符,运算结果是两数相除的余数。

5%3 //2
3%5 //3
‘++’和‘–’的使用

在原来的变量的基础上自增一或者自减一

int a = 10;
a++;
System.out.println(a) //11
int a = 10;
a--;
System.out.println(a) //9

讨论:

++ 或 --放在变量前后的区别

以++为例 --运算符同理

++在后,例如:a++ 表示先取值后自增

int a = 10;
int b = a++;
System.out.println(a); //11
System.out.println(b); //10

执行过程:
1:先从内存中取a的值,即10,
2:内存中的变量自加
3:最后赋值

++在前,例如:++a表示先自增再取值

int a = 10;
int b = ++a;
System.out.println(a); //11
System.out.println(b); //11

复杂的例子

int i=0;
i=++i+i; //先内存自加,变成1,取值,此时表达式 i=1+1;  又赋值给内存中的i,所以i就是2
System.out.println(i);   //2
				
				
int i=0;
i=i+++i;
System.out.println(i); //1
字符串中的+号
String str="AB";  //字符串,  相当于把字符穿起来的串
String str="1+2="+"3";
System.out.println(str);  //1+2=3  字符串中的+号充当字符串连接符
String str="1+2="+1+2;
System.out.println(str);  //1+2=12
//注意:在java中,参与运算的双方类型要相同,如果不同,需要把低的自动变成高的
String str=1+2+"=1+2";
System.out.println(str);  //3=1+2

赋值运算符

'='的使用

java中用‘=’表示赋值操作

注意:在使用‘=’进行复制操作时,小类型可以直接赋值给大类型。大类型直接赋值给小类型则会报错。

/*例子 1*/
byte a=10;
int b=a;  	//ok  把小类型给大类型,没有问题	
/*例子 2*/
byte a=10+5; //ok 因为编译器在编译器认识常量,所以知道10+5=15能被byte装下,所以没问题
/*例子 3*/
byte a=10;
a=a+5;    //error  因为a是变量,不认识,所以需要把a提升int在计算,所以结果为int在给byte不行!!!!	
/*例子 4*/
short a=10;
a=a+5;	//error 原因一样			
/*例子 5*/
char a=10;
a=a+5;  //error 原因一样
//总结:如果等式中含有 byte short char 变量时,直接变成int在计算
short a=10;
short b=5;
short c=a+b;  //编译报错
/*例子 6 强制类型转换*/
int a=10;
a=a+5;    //ok
int a=10;
byte b=a;   //不行,就想让他成立
/*强制类型转换*/
int a=10;
byte b=(byte)a; //强制类型转换
//强调:强转的时候,不要超出低类型的范围.如果超出了呢?
int a=127;
byte b=(byte)(a+1);  -->-128 //类似于表盘,重新转一圈
‘+=’ ‘-=’ ‘*=’ ‘/=’的使用
int a = 90;
a+=10; //a=a+10
System.out.println(a);//100

这样写的好处

这样写运算效率高,而且有隐含强转的作用

byte a=10;
a+=10;  //相当于 a=(byte)(a+10)

关系运算符

运算符含义
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
instanceof是否为某个类的对象

关系运算符的运算结果都是boolean类型的值

逻辑运算符

&运算符

与 两边都成立,结果才为真,如果有一边是假,结果就为假

System.out.println(7>2 & 2>7); //false
|运算符

或 两边只要有一个是真,结果就为真

System.out.println(7>2 | 2>7); //true
!运算符
!true //false
!false //true
&&运算符

短路与运算符

||运算符

短路或运算符

&和&&的区别

前者左边不成立,右边也要进行判断,后者,左边不成立,右边就不判断了

int a=1;
int b=1;
System.out.println(4>10 & b==a++);
System.out.println(a);  //2
int a=1;
int b=1;
System.out.println(4>10 && b==a++);
System.out.println(a);  //1

|和||的区别

前者左边成立,右边也要进行判断,后者,左边成立,右边就不判断了

位运算符

&运算符

25&18
11001
10010
-------
10000
|运算符
25|18
11001
10010
----------
11011
~运算符

非运算符(按位取反运算符)

~5 //-6
0000 0101
1111 1010
^运算符

异或运算符 相同为0,不同为1

25^18
11001
10010
------
01011
<<运算符

按位左移运算符

有符号的移位操作,将整体二进制码左移指定位数,右侧空位补0

比如 6
0000 0110 6
左移一次
000 01100 12

所以,左移一次相当于乘2

>>运算符

算术右移:有符号的移动操作,将整体二进制码右移指定位数,左侧补符号位,
也就是如果符号位是1就补1符号位是0就补0
比如 0000 0110 >>1 0000 0011 3

? 0000 0011>>1 0000 0001 1
右移一次,相当于除2

>>>运算符

逻辑右移:无符号移动操作,将整体二进制码右移指定位数,左侧用0补充
例如 0000 0110逻辑右移一位为0000 0011 //正数情况和算术右移一样
1111 0000逻辑右移一位为0111 1000 //负数情况会变成正数
附:对byte ,short,char 类型移位操作时,都会自动转成int在进行操作

条件运算符

条件运算符又叫三元表达式、三目运算符

格式:
条件表达式?表达式一:表达式二
过程:当表达式为真,则执行一
当表达式为假,则执行二

int a=10;
int b=12;
int max=a>b?a:b;
System.out.println(max);

流程控制语句

流程控制的三中结构

(1)顺序

(2)选择

(3)循环

选择结构

if语句

? if语句的几种格式

(1) if

if(条件表达式){
    分支执行内容;
}
//例
int age = 17;
if(age<18){
    System.out.println("未成年");
}
System.out.println("成年");

//附:如果if体中只有一句代码,花括号可以省略
int age=17;
if(age<18) 
    System.out.println("未成年");
System.out.println("成年");

(2) if-else

int age=17;
if(age<18) {
    System.out.println("未成年");
}else {
    System.out.println("成年");
}

(3) if-else if-else

int month=7;
if(month==1) {
    System.out.println("一月");
}else if(month==2){
    System.out.println("二月");
}else if(month==3) {
    System.out.println("三月");
}else {
    System.out.println("累了不想弄了");
}

(4)嵌套if

public static void main(String[] args) { 
    String today="周末";
    String weather="晴朗";
    if(toDay.equals("周末")) {
        if(weather.equals("晴朗")) {
            System.out.println("去室外");
        }else {
            System.out.println("去室内");
        }
    }else {
        System.out.println("上班");
    }
}
switch语句

格式:

switch(表达式){ 
//表达式 只可以接受 byte short int char Enum(1.5jdk提出的),String(1.7jdk提出的)
					case 取值1:
						执行语句;
						break;
					case 取值2:
						执行语句;
						break;
					case 取值3:
						执行语句;
						break;
					case 取值4:
						执行语句;
						break;
					.........
					default:
						执行语句;
						break;
				}

break用于跳出switch。不加的话会从第一个满足条件case开始一直运行到第一个break结束

public static void main(String[] args) {
    int month=3;
    switch (month) {
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏季");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋季");
            break;
        case 1:
        case 2:
        case 12:
            System.out.println("冬季");
            break;
        default:
            System.out.println("输入有误");
            break;
    }
}

键盘输入

Scanner

(1)next()方法键盘输入获取一个字符串
(2)nextInt()方法键盘输入获取一个整型数
import java.util.Scanner;

public class Test01 {

    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);   //借一个工具箱
        System.out.println("请输入一个成绩");
        int score=scan.nextInt();    //使用工具箱中的一个工具
        if(score>=0 && score<=20) {
            System.out.println("这孩子完蛋了");
        }else if(score>=21 && score<=40) {
            System.out.println("这孩子太操心了");
        }else if(score>=41 && score<=60) {
            System.out.println("赶紧救救吧");
        }else if(score>=61 && score<=80) {
            System.out.println("祖国的希望");
        }else if(score>=81 && score<=100) {
            System.out.println("开什么玩笑,一定是抄的");
        }else {
            System.out.println("范围不正确");
        }
        scan.close();  //关闭资源
    }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:22:10  更:2021-08-01 14:23:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 5:57:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码