黑马程序员Java零基础视频教程笔记-运算符 1

简介: 黑马程序员Java零基础视频教程笔记-运算符

一、算数运算符详解和综合练习

1. 运算符和表达式

① 运算符:对字面量或者变量进行操作的符号

表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。

不同运算符连接的表达式体现的是不同类型的表达式。

③ 举例

int a = 10;

int b = 20;

int c = a + b;

+:是运算符,并且是算术运算符

a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

2. 算数运算符

符号 作用
+
-
*
/
% 取模、取余

3. 样例

package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo1{
    public static void main(String[] args){
        //+
        System.out.println(3 + 2);//5
        //-
        System.out.println(5 - 1);//4
        //*(shift + 数字8)
        System.out.println(7 * 9);//63
        //如果在计算的时候有小数参与
        //结论:
        //在代码中,如果有小数参与计算,结果有可能不精确的
        //为什么呢
        //暂时只要知道这个结论就可以了
        //具体的原因,我们到了JavaSE的时候,会再详细的讲解
        System.out.println(1.1 + 1.1);//2.2
        System.out.println(1.1 + 1.0);//2.1100000000000003
        System.out.println(1.1 - 1.01);
        System.out.println(1.1 * 1.01);
    }
}
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo2{
    //主入口
    //结论:
    //1.整数参与计算,结果只能得到整数
    //2.小数参与计算,结果可能是不精确的,如果我们需要精确计算,那么需要用到后面的知识点
    public static void main(String[] args){
        //除法
        System.out.println(10 / 2);//5
        System.out.println(10 / 3);//3
        System.out.println(10.0 / 3);//3.3333333333333335
        //取模,取余,实际上也是做除法运算,只不过得到的是余数而已
        System.out.println(10 % 2);//0
        System.out.println(10 % 3);//1
        //应用场景
        //1.可以用取模来判断,A是否可以被B整除
        //A % B   10 % 3
        //2.可以判断A是否为偶数
        //A % 2 如果结果为0,那么证明A是一个偶数;如果结果是1,那么证明A是一个奇数
        //三个玩家
        //把每一张牌都定义一个序号
        //拿着序号 %3 如果结果为1,就发给第一个玩家
        //如果结果为2,就发给得二个玩家
        //如果结果为0,就发给第三个玩家
    }
}

4. 练习

package com.itheima.test;
import java.util.Scanner;
public class test1{
    public static void main(String[] args){
        //键盘录入一个三位数,获取其中的个位,十位,百位
        //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数");
        int number = sc.nextInt();
        //2.获取个位,十位,百位
        //公式:
        //个位:数字%10
        //十位:数字/10%10
        //百位:数字/10/10%10
        //……
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number /100 % 10;
        System.out.println(ge);
        System.out.println(shi);
        System.out.println(bai);
    }
}

二、隐式转换和强制转换

1. “+”操作的三种情况

① 数字相加

② 字符串相加

③ 字符相加

【注】数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算

2. 类型转换的分类

① 隐式转换

② 强制转换

3. 隐式转换

① 定义:把一个取值范围小的数值,转成取值范围大的数据

int a = 10;
double b = a;

② 取值范围:byte < short < int < long < float < double

③ 什么时候转换:

数据类型不一样,不能进行计算,需要转换成一样的才可以进行计算

④ 转换规则:

取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算

byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算

4. 强制转换

① 如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的。如果一定要这么做就需要加入强制转换

② 格式:目标数据类型 变量名 =(目标数据类型)被强制转换的数据

5. 样例

package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo3{
    public static void main(String[] args){
        byte b1 = 100;
        byte b2 = 100;
        //现在我们要强转的是谁
        //b1 + b2计算之后的结果
        //byte(b1) + b2 强转的是b1,并不是最终的结果
        byte result = byte(b1 + b2);
        System.out.println(result);//结果发生错误,因为要转换的数据过大
    }
}

三、字符串和字符的加操作

1. 字符串的“+”操作

① 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符了。会将前后的数据进行拼接,并产生一个新的字符串。

例如:“123”+123=“123123”

② 进行“+”操作时,从左到右逐个执行

例如:1+99+“年黑马”=“200年黑马”

③ 练习

package com.itheima.test;
import java.util.Scanner;
public class test1{
    public static void main(String[] args){
        //键盘录入一个三位数,获取其中的个位,十位,百位
        //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数");
        int number = sc.nextInt();
        //2.获取个位,十位,百位
        //公式:
        //个位:数字%10
        //十位:数字/10%10
        //百位:数字/10/10%10
        //……
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number /100 % 10;
        System.out.println("个位是:"+ge);
        System.out.println("十位是:"+shi);
        System.out.println("百位是:"+bai);
    }
}

2. 字符的“+”操作

当字符+字符/数字时,会把字符通过ASCII码表查询到对应的数字再进行计算

package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo4{
    public static void main(String[] args){
        char c = 'a';
        int result = c + 0;
        System.out.println(result);
    }
}

四、自增自减运算符

1. 基本用法

符号 作用 说明
++ 变量的值加1
- - 变量的值减1

注意事项:++和- -既可以放在变量的前边,也可以放在变量的后边

2. 两种用法

① 单独使用

++和- -无论是放在变量的前边还是后边,单独写一行结果是一样的

package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo5{
    public static void main(String[] args){
        //++和--
        int a = 10;
        //表示把变量a里面的值+1
        a++;
        System.out.println(a);//11
        //表示把变量a里面的值+1
        ++a;
        System.out.println(a);//12
        //表示把变量a里面的值-1
        a--;
        System.out.println(a);//11
        //表示把变量a里面的值-1
        --a;
        System.out.println(a);//10      
    }
}

② 参与计算

先用后加

int a = 10;
int b = a++;

先加后用

int a = 10;
int b = ++a;

3. 样例

package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo6{
    public static void main(String[] args){
         int x = 10;
         //后++:先用后加
         //先把x变量中的值拿出来用,赋值给y,然后再进行自增
         //赋值给y的值是自增前的
         int y = x++;// x = 11 y = 10
         //先++:先加后用
         //先把x进行自增,然后把自增后的结果赋值给左边的变量
         //先把x自增,变成12,然后再把自增后的12赋值给z
         int z = ++x;// x =12 z = 12
         System.out.println("x:"+x);//12
         System.out.println("y:"+y);//10
         System.out.println("z:"+z);//12
    }
}


目录
相关文章
|
17天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
17天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
24天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
27 2
|
16天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
34 0
|
5天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
35 6
|
20天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
18天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
20天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
14天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
14天前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
38 3