百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Day03-Java运算

xsobi 2024-11-23 10:51 1 浏览

1.数据类型中补充的几个小问题

1.在定义Long或者float类型变量的时候,要加L或者f。
2.整数默认是int类型,浮点数默认是double。
3.byte、short在定义的时候,他们接受的其实是一个int类型的值。这个是自己做了一个数据检测,如果不在他们的范围内,就报错。
byte值的问题
byte b1 = 127;
byte b2 = (byte)128;//-128
byte b3 = (byte)129;//-127
byte b4 = (byte)130;//-126
数据类型转换之默认转换
byte、short、char-int-long-float-double

long:8个字节
float:4个字节

A:它们底层的存储结构不同。

2.运算符的基本用法

1.运算:对常量和变量进行操作的过程称为运算
2.运算符:对常量和变量进行操作的符号称之为运算符
3.操作数:参与运算的数据称为操作数
4.用运算符把常量或者变量连接起来符号Java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。
package day03;

/**
 * 运算符:就是对常量和变量进行操作的符号
 * 分类:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符
 *
 * 算术运算符:
 *  +,—,*,/,%,++,——
 *
 *  注意事项:
 *      A:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
 *      B:/获取的是除法操作的商,%获取的是除法操作的余数
 */
public class OperatorDemo {
    public static void main(String[] args) {
        //定义变量
        int x = 3;//把3赋值给int类型的变量x
        int y = 4;
        System.out.println(x+y);//7
        System.out.println(x-y);//-1
        System.out.println(x*y);//12
        System.out.println(x/y);//0 整数相除只能得到整数

        //我就想得到小数,该咋办?
        //只需要把操作的数据中任意一个数据变为浮点数
        System.out.println(x*1.0/y);//0.75

        //%用法
        System.out.println(x%y);//3 得到的是余数
    }
}

3.++,--运算符的使用

package day03;

/**
 * ++,--运算符的使用
 *
 * 1.单独使用
 *      放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
 * 2.参与运算使用
 *      放在操作数的前面,先自增或者自减,然后再参与运算。
 *      放在操作数的后面,先参与运算,再自增或者自减。
 *  作用:就是对变量进行自增或者自减;
 */
public class OperatorDemo2 {
    public static void main(String[] args) {
        //定义两个变量
        int x = 3;
        int y = 4;

        //字符串的拼接(字符串和谁做运算都是拼接)
        System.out.println("x:"+x);//3
        System.out.println("y:"+y);//4

        //单独使用
        x++;
        y--;
        //System.out.println(x);//4
        System.out.println("x:"+x+",y:"+y);//x:4,y:3

        //意外的类型,常量是不可以这样做的
        //System.out.println(10++);
        System.out.println("----------------");
        int a = 3;
        int b = 4;

        int c = a++;
        int d = b--;
        System.out.println("a:"+a);//4
        System.out.println("b:"+b);//3
        System.out.println("c:"+c);//3
        System.out.println("d:"+d);//4
    }
}

4.++,--练习

package day03;

/**
 * 练习题
 * ++,--的练习题
 */
public class OperatorTest {
    public static void main(String[] args) {
        //第一题
        int a = 10;
        int b = 10;
        int c = 10;

        a = b++;//在后,先做运算,再自增 a=10,b=11
        c = --a;//在前,先自减,再做运算 a=9,c=9
        b = ++a;//在前,先自增,再做运算 a=10,b=10
        a = c--;//在后,先做运算,再自减 a=9 b=10 c=8
        System.out.println("a:"+a);//9
        System.out.println("b:"+b);//10
        System.out.println("c:"+c);//8

        //第二题
        int x = 4;
        int y = (x++)+(++x)+(x*10);
        System.out.println(y);//70
    }
}

5.算术运算符+的多种用法

package day03;

/**
 * +的用法
 *  A:加法
 *  B:正号
 *  C:字符串连接符
 */
public class OperatorDemo3 {
    public static void main(String[] args) {
        //加法
        System.out.println(3+4);//7
        //正号
        System.out.println(+4);//4

        System.out.println('a'+1);//这里是加法,char类型产于运算,首先转为int类型 98
        //字符串连接符
        System.out.println("hello"+'a'+1);//helloa1
        System.out.println('a'+1+"hello");//98hello
    }
}### 5.算术运算符+的多种用法

```java
package day03;

/**
 * +的用法
 *  A:加法
 *  B:正号
 *  C:字符串连接符
 */
public class OperatorDemo3 {
    public static void main(String[] args) {
        //加法
        System.out.println(3+4);//7
        //正号
        System.out.println(+4);//4

        System.out.println('a'+1);//这里是加法,char类型产于运算,首先转为int类型 98
        //字符串连接符
        System.out.println("hello"+'a'+1);//helloa1
        System.out.println('a'+1+"hello");//98hello
    }
}
```

6.赋值运算符

package day03;

/**
 * 赋值运算符
 * 1.符号
 *  =、+=、-=、*=、/=、%=
 *  =为基本的赋值运算符,其他的为扩展的赋值运算符
 */
public class OperatorDemo4 {
    public static void main(String[] args) {
        int a,b;
        a=b=10;
        System.out.println(a);//10
        System.out.println(b);//10

        int x = 10;
        x += 20;
        System.out.println(x);//30
    }
}

7.赋值运算符的面试题

package day03;

/**
 * 面试题
 */
public class OperatorTest2 {
    public static void main(String[] args) {
        short s = 1;
        //s = s + 1;

        /**
         * 扩展的赋值运算符其实隐含了一个强制类型转换
         * s += 1;
         * 不是等价于 s = s + 1;
         * 而是等价于 s = (s的数据类型)(s + 1);
         */
        s += 1;
    }
}

8.比较运算符的基本用法与注意事项

package day03;

/**
 * 比较运算符
 *      ==,!=,>,>=,<,<=
 * 特点:
 *      无论你的操作是简单还是复杂,结果是boolean类型
 */
public class OperatorDemo5 {
    public static void main(String[] args) {
        int x = 3;
        int y = 4;
        int z = 3;
        
        System.out.println(x == y);//false
        System.out.println(x == z);//true
        System.out.println((x+y)==(x+z));//false
        System.out.println("----------------------------");
    }
}

注意

1.比较运算符的结果都是boolean类型,也就是要么true,要么false。
2.比较运算符“==”,不能误写成“=”

9.逻辑运算符

package day03;

/**
 * 逻辑运算符
 *  &,|,^,!
 *  &&,||
 *
 * 特点:
 *  逻辑运算符一般用于连接boolean类型的表达式或者值
 *
 *  表达式:就是用运算符把常量或变量连接起来的符合Java语法的式子
 *      算术表达式 a+b
 *      比较表达式 a==b
 */
public class OperatorDemo6 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        //&逻辑与 有false则flase
        System.out.println((a>b) & (a>c));//false & false =false
        System.out.println((a>b) & (a<c));//false & true =false
        System.out.println((a<b) & (a>c));//true & false =false
        System.out.println((a<b) & (a<c));//true & true =true

        System.out.println("----------------------------------");

        //|逻辑或  有true则true
        System.out.println((a>b) | (a>c));//false | false =false
        System.out.println((a>b) | (a<c));//false | true =true
        System.out.println((a<b) | (a>c));//true | false =true
        System.out.println((a<b) | (a<c));//true | true =true

        System.out.println("---------------------------------");

        //^逻辑异或 男女关系=true 男男/女女=false
        System.out.println((a>b) ^ (a>c));//false ^ false =false
        System.out.println((a>b) ^ (a<c));//false ^ true =true
        System.out.println((a<b) ^ (a>c));//true ^ false =true
        System.out.println((a<b) ^ (a<c));//true ^ true =false

        //!逻辑非
        System.out.println(!(a>b));//!false = true
        System.out.println(!(a<b));//!true = false
    }
}

10.逻辑运算符&&和&的区别

package day03;

/**
 * &&和&的区别?
 *  A:最终结果一样
 *  B:&&具有短路效果,左边是false,右边不执行;||左边为true,右边不执行
 * ||和|的区别?
 */
public class OperatorDemo7 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        //&&
        System.out.println((a>b) && (a>c));//false & false =false
        System.out.println((a>b) && (a<c));//false & true =false
        System.out.println((a<b) && (a>c));//true & false =false
        System.out.println((a<b) && (a<c));//true & true =true

        System.out.println("----------------------------------");

        int x = 3;
        int y = 4;
        boolean b1 = ((++x==3) & (y++==4));//4 5 false
        boolean b2 = ((++x==3) && (y++==4));//4,4 false
        System.out.println("x:"+x);
        System.out.println("y:"+y);
        System.out.println(b1);
    }
}
package day03;

/**
 * &&和&的区别?
 *  A:最终结果一样
 *  B:&&具有短路效果,左边是false,右边不执行;||左边为true,右边不执行
 * ||和|的区别?
 */
public class OperatorDemo7 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int c = 5;

        //&&
        System.out.println((a>b) && (a>c));//false & false =false
        System.out.println((a>b) && (a<c));//false & true =false
        System.out.println((a<b) && (a>c));//true & false =false
        System.out.println((a<b) && (a<c));//true & true =true

        System.out.println("----------------------------------");

        int x = 3;
        int y = 4;
        boolean b1 = ((++x==3) & (y++==4));//4 5 false
        boolean b2 = ((++x==3) && (y++==4));//4,4 false
        System.out.println("x:"+x);
        System.out.println("y:"+y);
        System.out.println(b1);
    }
}

11.位运算的基本使用1

package day03;

/**
 * 位运算符
 *  <<左移 >>右移 >>>无符号右移 &与运算 |或运算 ^异或运算 ~ 反码
 *
 *  注意:
 *      要做位运算,首先要将数据转换为二进制
 */
public class OperatorDemo8 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;

        //注意:当两边是数字,做当位运算;当两边是布尔值,做的是逻辑运算;
        System.out.println(3 & 4);
        System.out.println(3 | 4);
        System.out.println(3 ^ 4);
        System.out.println(~3);
    }
    /**
     * 分析:因为是位运算,所以我们必须先把数据换算成二进制
     *   3的二进制 11
     *      00000000 00000000 00000000 00000011
     *   4的二进制 100
     *      00000000 00000000 00000000 00000100
     *   &位与运算:有0则0 有false就false
     *      00000000 00000000 00000000 00000000
     *      结果是0
     *   |位或运算:有1则1 有true则true
     *      00000000 00000000 00000000 00000111
     *      结果是7
     *   ^位异或运算:相同为0 不同为1
     *      00000000 00000000 00000000 00000111
     *      结果是7
     *   ~按位取反 0变1 1变0
     *      11111111 11111111 11111111 11111100(补码)
     *
     *      补码 11111111 11111111 11111111 11111100
     *      反码 11111111 11111111 11111111 11111011
     *      原码 10000000 00000000 00000000 00000100
     *      结果:-4
     *
     */
}

12.位运算的特点

package day03;

/**
 * ^的特点
 */
public class OperatorDemo9 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        //对另一个数据异或两次,结果不变
        System.out.println(a^b^b);//10
        System.out.println(a^b^a);//20
    }
}

13.运算的面试题

package day03;

/**
 * 面试题
 *  请自己实现两个整数变量的交换
 *
 */
public class OperatorTest3 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        //方式1
//        int c = a;
//        a = b;
//        b = c;

        //方式2
        a = a^b;
        b = a^b;
        a = a^b;
    }
}

15.三目运算符

package day03;

/**
 * 三目运算符
 * 格式
 *  (关系表达式)?表达式1:表达式2;
 *  如果条件为true,运算后的结果是表达式1;
 *  如果条件为false,运算后的结果是表达式2;
 *
 */
public class OperatorDemo10 {
    public static void main(String[] args) {
        int x = 3;
        int y = 4;
        int z = (x>y)?x:y;
        System.out.println(z);
    }
}

16.三目运算练习

package day03;

/**
 * 练习
 *  获取两个整数中的最大值
 *  获取三个整数中的最大值
 *  比较两个整数是否相同
 */
public class OperatorTest4 {
    public static void main(String[] args) {
        //获取两个整数中的最大值
        int x = 100;
        int y = 200;

        int max = x>y?x:y;
        System.out.println(max);//200
        System.out.println("--------");

        //获取三个整数中的最大值
        int a = 10;
        int b = 20;
        int c = 20;

        //分两步:
        //A:先比较a、b的最大值
        //B:拿a,b的最大值再和c进行比较
        int temp = ((a>b)?a:b);
        int max1 = (temp>c?temp:c);
        System.out.println("max1:"+max1);

        //一步到位
        int max2 = (a>b)?((a>c)?a:c):((b>c)?b:c);
        System.out.println(max2);
        
        //比较两个整数是否相同
        int m = 100;
        int n = 200;
        boolean flag = (m==n)?true:false;
        System.out.println(flag);
    }
}

20.顺序结构语句

流程控制语句
1.在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能

2.流程控制语句分类
  a.顺序结构
  b.选择结构
  c.循环结构
1.顺序结构
  a.是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
  b.总的来说:写在前面的先执行,写在后面的后执行。
package day03;

/**
 * 顺序结构
 */
public class OperatorDemo11 {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        System.out.println("我爱Java");
        System.out.println("程序结束了");
    }
}

21.选择结构

1.选择结构
  a.也被称为分支结构
  b.选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
  c.Java语言提供了两种选择结构语句
    if语句
    switch语句
package day03;

/**
 * 选择结构
 * a.if语句有三种格式
 * b.if语句第一种格式:
 *      if(关系表达式){
 *          语句体
 *      }
 * c.执行流程
 *  首先判断关系表达式看其结构是true还是false
 *  如果是true就执行语句体
 *  如果是false就不执行语句体
 */
public class OperatorDemo12 {
    public static void main(String[] args) {
        int x = 10;

        if (x==10){
            System.out.println("x等于10");
        }
        if (x==20){
            System.out.println("x等于20");
        }
        System.out.println("over");
    }
}

22.if语句注意事项

注意事项

1.关系表达式无论简单还是复杂,结果必须是boolean类型
2.if语句控制的语句体如果是一条语句,打括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
3.一般来说:有左打括号就没有分号,有分号就没有左大括号
package day03;

/**
 * if语句注意事项
 */
public class OperatorDemo13 {
    public static void main(String[] args) {
        int x = 10;
        if (x==10){
            System.out.println("x等于10");
        }
        if (x>5||x==10){
            System.out.println("x大于或者等于10");
        }

        int a = 100;
        if (a==10)System.out.println("a的值是100");

        int b = 100;
        if (b!=100);//这里其实是有语句体的,只不过是空语句体。

        //代码块
        {
            System.out.println("b的值是100");
            System.out.println("over");
        }
    }
}

23.if语句格式2

package day03;

/**
 * if语句第二种格式:
 * a.if(关系表达式){
 *     语句体1;
 * }else{
 *     语句体2;
 * }
 * b.执行流程
 *  首先判断关系表达式看其结果是true还是false
 *  如果是true就执行语句体1
 *  如果是false就执行语句体2
 *
 * c.注意
 *  else后面是没有比较表达式的,只有if后面有
 */
public class OperatorDemo14 {
    public static void main(String[] args) {
        //判断两个数据是否相等
        int a = 10;
        int b = 20;

        if (a == b){
            System.out.println("a等于b");
        }else {
            System.out.println("a不等于b");
        }
    }
}

24.if格式2练习

package day03;

import java.util.Scanner;

/**
 * if格式2的练习
 *  a.获取两个数据中较大的值
 *  b.判断一个数据是奇数还是偶数
 */
public class OperatorTest5 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //获取两个数据中较大的值
        System.out.println("请输入第一个数据:");
        int a = sc.nextInt();

        System.out.println("请输入第二个数据:");
        int b = sc.nextInt();

        int max;
        if (a>b){
            max=a;
        }else {
            max=b;
        }
        System.out.println(max);

        //判断一个数据是奇数还是偶数
        System.out.println("请输入你要判断的数据:");
        int x = sc.nextInt();
        if ((x%2)==0){
            System.out.println("这个数据是偶数");
        }else {
            System.out.println("这个数据是奇数");
        }
    }
}

相关推荐

js向对象中添加元素(对象,数组) js对象里面添加元素

一、添加一个元素对象名["属性名"]=值(值:可以是一个值,可以是一个对象,也可以是一个数组)这样添加进去的元素,就是一个值或对象或数组...

JS小技巧,如何去重对象数组?(一)

大家好,关于数组对象去重的业务场景,想必大家都遇到过类似的需求吧,这对这样的需求你是怎么做的呢。下面我就先和大家分享下如果是基于对象的1个属性是怎么去重实现的。方法一:使用.filter()和....

「C/C++」之数组、vector对象和array对象的比较

数组学习过C语言的,对数组应该都不会陌生,于是这里就不再对数组进行展开介绍。模板类vector模板类vector类似于string,也是一种动态数组。能够在运行阶段设置vector对象的长度,可以在末...

如何用sessionStorage保存对象和数组

背景:在工作中,我将[{},{}]对象数组形式,存储到sessionStorage,然后ta变成了我看不懂的形式,然后我想取之用之,发现不可能了~记录这次深刻的教训。$clickCouponIndex...

JavaScript Array 对象 javascript的array对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

JavaScript中的数组Array(对象) js array数组

1:数组Array:-数组也是一个对象-数组也是用来存储数据的-和object不同,数组中可以存储一组有序的数据,-数组中存储的数据我们称其为元素(element)-数组中的每一个元素都有一...

数组和对象方法&amp;数组去重 数组去重的5种方法前端

列举一下JavaScript数组和对象有哪些原生方法?数组:arr.concat(arr1,arr2,arrn);--合并两个或多个数组。此方法不会修改原有数组,而是返回一个新数组...

C++ 类如何定义对象数组?初始化数组?linux C++第43讲

对象数组学过C语言的读者对数组的概念应该很熟悉了。数组的元素可以是int类型的变量,例如int...

ElasticSearch第六篇:复合数据类型-数组,对象

在ElasticSearch中,使用JSON结构来存储数据,一个Key/Value对是JSON的一个字段,而Value可以是基础数据类型,也可以是数组,文档(也叫对象),或文档数组,因此,每个JSON...

第58条:区分数组对象和类数组对象

示例设想有两个不同类的API。第一个是位向量:有序的位集合varbits=newBitVector;bits.enable(4);bits.enable([1,3,8,17]);b...

八皇后问题解法(Common Lisp实现)

如何才能在一张国际象棋的棋盘上摆上八个皇后而不致使她们互相威胁呢?这个著名的问题可以方便地通过一种树搜索方法来解决。首先,我们需要写一个函数来判断棋盘上的两个皇后是否互相威协。在国际象棋中,皇后可以沿...

visual lisp修改颜色的模板函数 怎么更改visual studio的配色

(defunBF-yansemokuai(tuyuanyanse/ss)...

用中望CAD加载LISP程序技巧 中望cad2015怎么加载燕秀

1、首先请加载lisp程序,加载方法如下:在菜单栏选择工具——加载应用程序——添加,选择lisp程序然后加载,然后选择添加到启动组。2、然后是添加自定义栏以及图标,方法如下(以...

图的深度优先搜索和广度优先搜索(Common Lisp实现)

为了便于描述,本文中的图指的是下图所示的无向图。搜索指:搜索从S到F的一条路径。若存在,则以表的形式返回路径;若不存在,则返回nil。...

两个有助于理解Common Lisp宏的例子

在Lisp中,函数和数据具有相同的形式。这是Lisp语言的一个重大特色。一个Lisp函数可以分析另一个Lisp函数;甚至可以和另一个Lisp函数组成一个整体,并加以利用。Lisp的宏,是实现上述特色的...