Java学习笔记之Java基础语法02-运算符

1.运算符和表达式

1.1 运算符:

  • 定义:就是对常量(字面量)或者变量进行操作的符号。

比如: + - * /

1.2 表达式:

  • 定义:用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。

比如:a + b 这个整体就是表达式。而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式。

2.算术运算符

分类:

+ - * / %

运算特点:

+ - * :跟小学数学中一模一样没有任何区别.

注意事项:

  • 整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。

  • 小数直接参与运算,得到的结果有可能是不精确的。

    • 代码演示:

      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
      应用场景:
      //可以利用取模来判断一个数是奇数还是偶数
      System.out.println(15 % 2);//1  奇数
      

练习:数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

代码示例:

//1.键盘录入一个三位数
//导包 --- 创建对象 --- 接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();//123//2.获取这个三位数的个位、十位、百位并打印出来
//公式:
//针对于任意的一个数而言
//个位: 数字 % 10
int ones = number % 10;
//十位: 数字 / 10 % 10
int tens = number / 10 % 10;
//百位: 数字 / 100 % 10
int hundreds = number / 100  % 10;//输出结果
System.out.println(ones);
System.out.println(tens);
System.out.println(hundreds);
/*
获取任意一个数上每一位数。
公式:个位:数字 % 10十位:数字 / 10 % 10百位:数字 / 100 % 10千位:数字 / 1000 % 10
*/

3.数据类型转换

3.1 隐式转换

1.概念

  • 概念: 就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。也叫自动类型提升。

  • 简单记忆:就是小的给大的,可以直接给。

2.两种提升规则:

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

    • char -> int -> long -> float -> double

    • byte -> short -> int -> long -> float -> double

    • 代码演示:

      byte b = 10;
      short s = 20;
      long n = 100L;
      ??? result = b + s + n;
      /*
      问变量result是什么类型的?long
      解释:
      ​	变量b是byte类型的,变量s是short类型的,变量n是long类型的。
      ​	byte,short,char类型的变量在参与运算的时候,变量里面的值会直接先提升为int。第一步:变量b和变量s里面的值会先提升为int参与运算。
      ​		int + int + long第二步:而long类型的取值范围是大于int的取值范围的。
      ​		所以变量b和变量s里面的值会再次提升为long。
      ​		long + long + long。所以最终结果是long类型的。
      */
      
  • byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算,byte、short和char两者之间不会自动转换

    • 代码演示:

      byte b1 = 10;
      byte b2 = 20;
      ??? result = b1 + b2;//int
      //问变量result是什么类型的?
      //解释:因为b1和b2都是byte类型的。所以在参与计算的时候,变量b1和变量b2里面的值都会自动提升为int类型的。最终其实就是两个int类型的相加,最终结果也是int类型的。
      
  • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量组大的那种数据类型,然后再进行计算

  • 当精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换

    • 代码演示:

      double d = 10;
      System.out.println(d);//10.0
      /*
      解释:10是整数,整数默认是int类型的。而在取值范围的顺序中:byte short int long float double在赋值的时候把一个int类型的赋值给了一个double类型的。。
      */byte b = 100;
      int i = b;//可以成功赋值
      //因为byte的取值范围是小的,int的取值范围是大的,在底层进行了隐式转换,不需要我们额外写代码单独实现,是可以直接赋值。
      
  • boolean不参与转换

  • 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

3.2 强制转换

1. 概念:

  • 如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作。

  • 如果一定要这么干,就需要加入强制转换。

2.书写格式:

目标数据类型 变量名 = (目标数据类型)被强转的数据;
  • 简单理解: 要转成什么类型的,那么就在小括号中写什么类型就可以了。

  • 代码演示:

    public class OperatorDemo2 {public static void main(String[] args) {double a = 12.3;int b = (int) a;System.out.println(b);//12}
    }
    
  • 注意事项:

    • 强制转换有可能会导致数据发生错误。(数据的精度丢失/数据溢出)

    • 强转符号只针对最近的操作数有效,往往会使用小括号提升优先级

      • 代码演示:

        //强制转换符号只针对最近的操作数有效,往往会使用小括号提升优先级
        //int x= (int)10 *3.5 + 6 * 1.5;//编译错误:double -> int
        int x = (int)(10 *3.5 + 6 * 1.5);
        System.out.println(x);
        
    • char类型可以保存int的常量值,但不能保存int的变量值,需要强转

      • 代码演示:

        char c1 = 100;//ok
        int m = 100;//ok
        //char c2 = m;//错误,自动转换类型失败:从int转换到char可能会有损失
        char c3 = (char)m;//ok
        System.out.println(c3);//100对应的字符:d
        

4.➕操作符

4.1 规则

  • 当左右两边都是数值型时,则做加法运算

  • 当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。

  • 当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。

    • 代码演示:

      result = 1 + "abc" + 1;//result = "1abc1"
      /*
      解释:
      第一步: 1 + "abc"。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"1abc"
      第二步:  "1abc" + 1。这个过程中,有字符串参与的,所以做的也是拼接操作,产生一个新的字符串"1abc1"
      */String name = "黑默丁格";
      System.out.println("我的名字是" + name);//我的名字是黑默丁格
      //解释:当字符串跟变量相加的时候,实际上是跟变量里面的值进行拼接。
      
  • 当连续进行+操作时,从左到右逐个执行的,即运算顺序:从左到右。

    • 代码演示:

      result = 1 + 2 + "abc" + 2 + 1;// result = "3abc21"
      /*
      解释:
      第一步:1 + 2 。在这个过程中,没有字符串参与的,所以做的是加法运算,结果为3。
      第二步:3 + "abc"。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc"。
      第三步:"3abc" + 2。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc2"。
      第四步:"3abc2" + 1。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串“3abc21”
      */
      

代码演示:

char c = 'a';
int result = c + 0;
System.out.println(result); //97
System.out.println(1 + "a"); //98
System.out.println('a' + "abc"); //"aabc"
System.out.println(100 + 98);//198
System.out.println("100" + 98);//10098System.out.println(100 + 3 + "hello");//103hello
System.out.println("hello" + 100 + 3);//hello1003ASCII码表中:
'a'   -----    97
'A'   -----    65

5.算术运算符总结

分类:

+ - * / %  这些操作跟小学数学几乎是一模一样的。

注意点:

  • / 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。
  • 整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。
  • 算术运算符的高级用法:
    • 是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。
    • 特例:字符串只有+操作,没有其他操作。

6.自增自减运算符

6.1 分类:

++  自增运算符	就是把变量里面的值+1
--  自减运算符	就是把变量里面的值-1

6.2 使用方式:

  • 放在变量的前面,我们叫做先++。 比如:++a
  • 放在变量的后面,我们叫做后++。 比如:a++

注意点: 不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。

代码演示:

//++
int a = 10;
a++;//就是让变量a里面的值 + 1
System.out.println(a);//11
++a;//就是让变量a里面的值 + 1
System.out.println(a);//12

7.赋值运算符

7.1 赋值运算符

  • 符号:=

  • 运算过程:就是把等号右边的结果赋值给左边的变量

代码演示:

public class OperatorDemo6 {public static void main(String[] args) {//1.最为简单的赋值运算符用法int a = 10;//就是把10赋值给变量aSystem.out.println(a);//2.如果等号右边需要进行计算。int b = 20;int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量System.out.println(c);//3.特殊的用法a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量System.out.println(a);//20}
}

7.2 扩展赋值运算符

  • 符号:+=、-=、*=、/=、%=

  • 运算规则:就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。

代码演示:

public class OperatorDemo7 {public static void main(String[] args) {//扩展赋值运算符int a = 10;int b = 20;a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响// 相当于 a = a + b;System.out.println(a);//30System.out.println(b);//20}
}

注意细节:扩展的赋值运算符中隐层还包含了一个强制转换。

代码演示:以+=为例。

a += b ;实际上相当于 a = (byte)(a + b);

public class OperatorDemo8 {public static void main(String[] args) {byte a = 10;byte b = 20;//a += b;a = (byte)(a + b);System.out.println(a);//30}
}

8.关系运算符

  • 又叫比较运算符,其实就是拿着左边跟右边进行了判断而已。

  • 分类:

符号解释
==就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false
!=就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false
>就是判断左边是否大于右边,如果成立就是true,如果不成立就是false
>=就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false
<就是判断左边是否小于右边,如果成立就是true,如果不成立就是false
<=就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false
instanceof就是检查是否是类的对象,如果是就是true,如果不是就是false,示例:“String” instanceof String -> true
  • 注意细节:
    • 关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
    • 在写==的时候,千万不要写成=

9.逻辑运算符

9.1 & 和 | :

  • &:逻辑与(而且)

    • 运算规则:
      • 两边都为真,结果才是真,只要有一个为假,那么结果就是假。
      • 如果第一个条件判断为假,第二个条件任然需要判断,效率低下
  • |:逻辑或(或者)

    • 运算规则:
      • 两边都为假,结果才是假,只要有一个为真,那么结果就是真。
      • 如果第一个条件判断为真,第二个条件任然需要判断,效率低下

代码演示:

// &  //两边都是真,结果才是真。
System.out.println(true & true);//true
System.out.println(false & false);//false
System.out.println(true & false);//false
System.out.println(false & true);//falseSystem.out.println("===================================");// | 或  //两边都是假,结果才是假,如果有一个为真,那么结果就是真。
System.out.println(true | true);//true
System.out.println(false | false);//false
System.out.println(true | false);//true
System.out.println(false | true);//true

9.2 ^(异或):

  • 计算规则: 如果两边相同,结果为false,如果两边不同,结果为true

代码演示:

//^   //左右不相同,结果才是true,左右相同结果就是false
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true

9.3 !(取反):

  • 是取反,也叫做非。

  • 计算规则:false取反就是true,true取反就是false

  • 温馨提示:取反最多只用一个。

代码演示:

System.out.println(!false);//true
System.out.println(!true);//falseSystem.out.println(!!false);//注意点:取反最多只用一个。

9.4.短路逻辑运算符

&& 和 ||:

  • **说明:**两者的运算结果和&、|的结果是一样的,只不过具有短路的效果。

  • 逻辑核心:

    • 当左边不能确定整个表达式的结果,右边才会执行。
    • 当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。

9.5 总结:

  • 最为常用: && || !

9.6 练习巩固

练习题1

int x = 5;
int y = 5;
if(x++ ==6 & ++y == 6){//逻辑与x = 11;
}
System.out.println("x = " + x + ", y = " + y);
6,6
int x = 5;
int y = 5;
if(x++ ==6 && ++y == 6){//短路与x = 11;
}
System.out.println("x = " + x + ", y = " + y);
6,5
int x = 5;
int y = 5;
if(x++ ==6 | ++y == 6){//逻辑或x = 11;
}
System.out.println("x = " + x + ", y = " + y);
11,6
int x = 5;
int y = 5;
if(x++ ==6 || ++y == 6){//短路或x = 11;
}
System.out.println("x = " + x + ", y = " + y);
11,5

练习题2

boolean x = true;
boolean y = true;
short z = 46;
if((z++ == 46) && (y = true))z++;
if((x = false) || (++z == 49))z++;
System.out.println("z = " + z);//50

10.三元运算符

  • 名称:三元表达式或者问号冒号表达式。

  • 格式:

    关系表达式 ? 表达式1 :表达式2
  • 计算规则:

    1. 首先计算关系表达式的值。
    2. 如果关系表达式的值为真,那么执行表达式1。
    3. 如果关系表达式的值为假,那么执行表达式2。
  • 注意细节:

    • 三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
    • 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)

代码演示:

public class OperatorDemo12 {public static void main(String[] args) {//需求:求两个数的较大值int a = 10;int b = 20;//格式:关系表达式 ? 表达式1 : 表达式2 ;//注意点://三元运算符的最终结果一定要被使用。//要么赋值给一个变量,要么直接输出。int max =  a > b ? a : b ;System.out.println(max);System.out.println(a > b ? a : b);}
}

练习1-两只老虎

需求:动物园里有两只老虎,两只老虎的体重分别为通过键盘录入获得,请用程序实现判断两只老虎的体重是否相同。

代码示例:

//1.获取两只老虎的体重
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一只老虎的体重");
int weight1 = sc.nextInt();
System.out.println("请输入第二只老虎的体重");
int weight2 = sc.nextInt();//2.利用三元运算符求出最终结果
String result = weight1 == weight2 ? "相同" : "不相同";
System.out.println(result);

练习2-求三个数的最大值

需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm。请用程序实现获取这三个和尚的最高身高。

代码示例:

//1.定义三个变量记录和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;//2.利用三元运算符求出两个数中的较大值。
int temp = height1 > height2 ? height1 : height2;//3.求出最终的结果
int max = temp > height3 ? temp : height3;System.out.println(max);

11.运算符的优先级

  • 在Java中涉及了很多的运算符,每一种运算符都有各自的优先级。

  • 小括号优先于所有。

  • 只有单目运算符、赋值运算符是从右往左运算的

  • 上一行运算符总优先于下一行**(hsp的笔记)**

12.原码、反码和补码

原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负

​ 原码的弊端:

​ 利用源码进行计算的时候,如果是正数没问题。

​ 但是如果是负数,结果就出错,实际运算的方向,跟正确运算的方向是相反的。

反码:为了解决原码不能计算负数的问题而出现的

​ 反码的计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变。数值取反,0边1,1变0。

​ 反码的弊端:负数运算的时候,如果结果不跨零,是没任何问题,但是如果结果跨零,跟实际结果会有1的偏差。

补码:为了解决负数计算跨零的问题出现的。

​ 补码的计算规则:

​ 正数的补码不变,负数的补码在反码的基础上+1。

​ 另外补码还能多记录一个特殊的值-128(1000 0000),该数据在1字节下,没有原码和反码。

​ 补码的注意点:

​ 计算机中存储和计算都是以补码的形式进行的。

​ 补码如何得到十进制:

​ 负数的补码转十进制:右边开始,直到见1,之后翻转,得到十进制数,前面再加符号

13.位运算符

  • 按位与&:两位全为1,结果为1,否则为0
  • 按位或|:两位有一位为1,结果为1,否则为0
  • 按位异或^:两位一个为0,一个为1,结果为1,否则为0
  • 按位取反~:0变1,1变0
  • 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
  • 算术左移 <<:符号位不变,低位补 0
  • 逻辑右移>>>:也叫无符号右移,运算规则是: 低位溢出,高位补 0

特别说明:没有 <<< 符号

public class Test{public static void main(String[] args){int a = 200;int b = 10;System.out.println(a & b);System.out.println(a | b);System.out.println(a << 2);//左移,低位补0System.out.println(a >> 2);//右移,高位补0或1System.out.println(a >>> 2);//右移,高位补0int c=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 =0int d=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4}
}

练习1:

public static void main(String []args){int a=1>>2; // 1 向右位移 2 位int b=-1>>2;//算术右移int c=1<<2;//算术左移int d=-1<<2;//int e=3>>>2;//无符号右移//a,b,c,d,e 结果是多少System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);
}

练习2:

~2=? // 按位取反
2&3=?// 2 按位与 3
2|3=? ~-5=?
13&7=?
5|4=?
-3^3=?//^ 按位异或

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-03-20 作业

作业要求&#xff1a; 1> 创建一个工人信息库&#xff0c;包含工号&#xff08;主键&#xff09;、姓名、年龄、薪资。 2> 添加三条工人信息&#xff08;可以完整信息&#xff0c;也可以非完整信息&#xff09; 3> 修改某一个工人的薪资&#xff08;确定的一个&#x…

电影aac是什么意思?如何播放、转换、编辑aac?

"电影AAC"这个术语可能是指电影中的音频编码格式。AAC&#xff08;Advanced Audio Coding&#xff09;是一种常见的音频编码格式&#xff0c;通常用于压缩音频文件&#xff0c;以在保持高质量的同时减小文件大小。在电影中&#xff0c;AAC格式的音频通常用于提供高质…

Java学习笔记NO.25

T2.编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。要求&#xff1a; (1)定义乐器类Instrument&#xff0c;包括方法makeSound() (2)定义乐器类的子类&#xff1a;二胡Erhu、钢琴Piano和小提琴Violin (3)定义乐手类…

H12-811题库(带解析,亲测高分可以通过)

大家可以直接点赞关注后&#xff0c;加作者微信&#xff08;备注“CSDN”&#xff09;就可以获取&#xff0c;微信在文章最后&#xff01; 808、[单选题]某公司网管要进行网络规划的时候&#xff0c;能够要让PC1访问PC2的数据包从G0/0/0口走(图上G0/0/2)。PC2访问PC1的数据包从…

抗辐射相机行业深度分析及投资机会探讨

一、市场趋势 抗辐射相机作为特种设备&#xff0c;主要用于军事侦察、核工业检测、太空探索等高辐射环境下的成像需求。随着全球核能和太空探索活动的增加&#xff0c;对高性能抗辐射相机的需求呈现上升趋势。此外&#xff0c;国家安全防护级别的提升也为该行业带来了新的增长…

浅谈RPC的理解

浅谈RPC的理解 前言RPC体系Dubbo架构最后 前言 本文中部分知识涉及Dubbo&#xff0c;需要对Dubbo有一定的理解&#xff0c;且对源码有一定了解 如果不了解&#xff0c;可以参考学习我之前的文章&#xff1a; 浅谈Spring整合Dubbo源码&#xff08;Service和Reference注解部分&am…

网络世界的城关——网卡

网络世界的城关——网卡 网卡到底是什么&#xff1f;网卡的功能网卡的真面目网卡的组成网卡的种类1.基于网络连接方式分类2.基于总线接口类型分类3.基于接口类型的分类4.基于传输速度的分类5.基于应用领域的分类 网卡到底是什么&#xff1f; 网卡我们可以这样通俗地理解&#x…

vue 若依 新开tab 不关闭旧的tab

注意 这里不是新开窗口&#xff08;_blank不符合我的需求&#xff09;&#xff0c;是新开一个tab若依对于统一组件打开的tab只能存在一个&#xff0c;因为路径相同 思路 路径不一致不就行了&#xff0c;动态生成的法子肯定是用不了了在router.js中配置路径&#xff1a;路径后面…

游戏平台出海运营有难度吗?

随着全球互联网的飞速发展&#xff0c;游戏产业已经成为了文化娱乐领域的重要支柱。在这个背景下&#xff0c;越来越多的游戏平台开始寻求出海运营&#xff0c;以拓展海外市场&#xff0c;实现更大的商业价值。然而&#xff0c;游戏平台出海运营并非易事&#xff0c;其中涉及到…

‍Java OCR技术全面解析:六大解决方案比较

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

个人可以做知识付费网站吗

个人可以做知识付费网站吗 个人能够做学问付费网站吗&#xff1f;答案是肯定的&#xff01;如今个人做学问付费网站并不需求太多的资金和技术支持&#xff0c;我们只需求购置一台效劳器或虚拟主机&#xff0c;然后在该主机空间上搭建一个WordPress网站&#xff0c;最后运用带有…

【C语言】数9的个数

编写程序数一下 1到 100 的所有整数中出现多少个数字9 1&#xff0c;首先产生1~100的数字。然猴设法得到数9个数&#xff0c;例如个位&#xff1a;19%109&#xff0c;十位&#xff1a;91/109。 2&#xff0c;每次得到数九的时候&#xff0c;就用一个变量来进行计数。 代码如…

【极简无废话】open3d可视化torch、numpy点云

建议直接看文档&#xff0c;很多都代码老了&#xff0c;注意把代码版本调整到你使用的open3d的版本&#xff1a; https://www.open3d.org/docs/release/tutorial/visualization/visualization.html 请注意open3d应该已经不支持centos了&#xff01; 从其他格式转换成open3d…

MySQL 索引的10 个核心要点

文章目录 &#x1f349;1. 索引底层采用什么数据结构&#xff1f;为什么不用hash&#x1f349;2. B树与B树区别&#xff1f;为何用B树&#xff1f;&#x1f349;3. 自增主键理解&#xff1f;&#x1f349;4. 为什么自增主键不连续&#x1f349;5. Innodb为什么推荐用自增ID&…

GEE高阶案例——直方图匹配用于影像条带修复(geemap和eemont)进行直方图匹配(sentinel/modis和Landsat5/8)

如何利用geemap和eemont中的方法进行直方图匹配研究。Landsat5/8之间的单景影像之间的匹配,sentinel-2和modis之间的影像匹配为例分析。 简介 直方图匹配是一种数字图像处理技术,用于将一个图像的直方图转换成另一个图像的直方图。直方图是对图像亮度或颜色分布的统计量,可…

马斯克开源的大模型Grok-1

马斯克开源的大模型是Grok-1 Grok-1是一个参数量达到3140亿的AI大语言模型&#xff0c;其规模超越了OpenAI GPT-3.5的1750亿参数&#xff0c;是目前世界上最大的开源LLM大语言模型。马斯克通过其旗下的AI公司xAI开发了这一模型&#xff0c;并在过去4个月内采用Mixture-of-Expe…

jni入门学习 CMakeLists脚本

在 Android Studio 中使用 CMake 可以编译 C/C 代码&#xff0c;这为开发者提供了在 Android 应用中嵌入本地代码的能力。下面是关于在 Android Studio 中使用 CMake 编译的详细说明&#xff1a; 1. 创建 CMakeLists.txt 文件&#xff1a; 首先&#xff0c;你需要在项目的根目…

ISP技术综述

原文来自技术前沿&#xff1a;ISP芯片终极进化——VP芯片&#xff08;AI视觉处理器&#xff09; 目录 1.计算机视觉的定义 2.与计算机视觉密切相关的概念与计算机视觉密切相关的概念有机器视觉&#xff0c;图像处理与分析&#xff0c;图像和视频理解。 3.计算机视觉的应用 …

python进行语音分离和说话人识别

场景: 一段音频中有多个说话人,将不同的人说的话分离出来 已知一些人的语音特征,跟分离出来的片段,分别求特征的余弦距离,余弦距离最小的作为说话的人 安装: pip install pyannote.audio # _*_ coding: utf-8 _*_import torch from pyannote.audio import Model, Pipel…

RIPGeo代码理解(四)model.py( RIPGeo的核心源代码)

​ 代码链接:RIPGeo代码实现 ├── lib # 包含模型(model)实现文件 │ |── layers.py # 注意力机制的代码。 │ |── model.py # TrustGeo的核心源代码。 │ |── sublayers.py # layer.py的支持文件。 │ |── utils.…