javaSE03基础-数据类型-运算符

Java变量

一级目录

二级目录

三级目录

  • 变量:程序中最基本的储存单元,程序执行中数值可变.变量其实是内存中的一小块区域,使用变量名来访问这块区域,试用前必须先申请(声明),然后必须赋值,才能使用.

  • 变量是通过使用变量名来访问这块区域的.

    要素:变量名,变量类型.

    试用前必须声明:

    [修饰符]   type    varName [=value][,varName[=value]……];
        例如:     int i = 100; 
    

Java数据类型

数据类型

强数据语言,指导JVM分配内存空间
在内存分配不同的大小的内存空间

按数据类型

  • 基本数据类型
    • 数值型
      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型
    • 类(class):包含字符串
    • 接口(interface)
    • 数组([])

变量分类

  • 从数据类型角度分:
    • 基本数据类型
    • 引用数据类型
  • 位置角度
    • 成员变量/类的属性(定义在类中)
    • 局部变量(定义在方法中)

使用变量时:在赋值时需要注意与类型一致相匹配.

整数类型

Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性

类 型占用存储空间表数范围
byte1字节-128 ~ 127
short2字节-215 ~ 215-1
int4字节-231 ~ 231-1
long8字节-263 ~ 263-1

Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,

float的容量大于int long

对于整数,有四种表示方式:

  • 二进制:0,1 ,满2进1.以0b或0B开头

  • 十进制:0-9 ,满10进1.

  • 八进制:0-7 ,满8进1. 以数字0开头表示。

  • 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。

浮点类型

与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。

Java 浮点类型有两种表示形式

  • 十进制数形式,例如: 3.14 314.0

  • 科学记数法形式,如 3.14e2 3.14E2

float 4字节 4字节的浮点的容量大于 4字节,8字节的整数

类 型占用存储空间表数范围
float4字节-3.403E38~3.403E38
double8字节-1.798E308~1.798E308

浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F

如:double d = 12345.6; //正确 float f = 12.3f; //必须加f否则会出错

计算机的浮点数是以近似值方式存储

    public static void main(String[] args) {
        float a=10.2F;
        double b=10.3;
        System.out.println(b-a);
    }

结果:0.10000019073486399

逻辑型boolean(布尔)

boolean类型适合于逻辑运算,一般用于程序流程控制

boolean 类型数据只允许取值 true 或 false

注意:不可以0或非 0 的整数替代false和true

用法举例:逻辑控制语句
        boolean flag;
        flag = true;
        if(flag) {
            //do something
        }

字符型char

char 型数据用来表示通常意义上的“字符”,char占2字节,字符用单引号括起来的单个字符,例如:
char c1 = ‘a’;
char c2 =‘中’;
可以涵盖世界上所有书面语的字符。

char运算

  • char类型在字符编码表中有对应的数值。
  • char c=‘a’+1;  先将’a’提升为int,计算结果98,对应的字符是b。

charl类型数据可以参与算术运算

使用字符对应的码换算成ASCII对应的数字进行运算.

ASCII 码

计算机底层,所有数据都使用二进制表示,每一个二进制位(bit)有 0 和 1 两种状态,因此 8 个二进制位就可以组合出 256 种状态.被称为一个字节(byte).

ASCII(ASCII American Standard Code for Information Interchange,美国信息互换标准代码)上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。

只能表示英文

  • 缺点:
    不能表示所有字符

Unicode 编码

一种编码,包含世界各个国家的文字字符,使用 Unicode 没有乱码的问题

Java采用unicode编码规范,其中完全包含ASCII编码

UTF-8是针对Unicode的一种可变长度字符编码,在utf-8编码表中,一个中文占3个字节,一个英文占1个字节.

基本数据类型转换

可以从任意基本类型转型到另外的基本类型: boolean 类型不可以转换为其他的数据类型。

  • 默认转换:

    整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

    容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:
    byte,short,char->int->long->float->double

    byte short char不会相互准换,但是可以通过int强制转化

  • 强制转换:要加上强制转换符要加上强制转换符,但可能造成精度降低溢出

            int a=10;
            double b=a;
    
            float c=10.2F;
            double d=c;
    
            int v=128;
            byte f=(byte) v;
    

有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算

java运算符

算术运算符: +,-,*,/,%,++,–

字符串连接运算符:+
关系(比较)运算符: >,<,>=,<=,==,!=
逻辑运算符: !,& , | , &&,||
赋值运算符: = ,+ =,- =,* =,/ =
条件运算符
位运算符

算术运算符

运算符运算范例结果
+正号+33
-负号b=4; -b-4
+5+510
-6-42
*****3*412
/5/51
%取模7%52
++自增(前):先运算后取值__自增(后):先取值后运算a=2;b=++a;~~a=2;b=a++;a=3;b=3~~a=3;b=2
- -自减(前):先运算后取值__自减(后):先取值后运算a=2;b=- -a~~a=2;b=a- -a=1;b=1~~a=1;b=2
+字符串相加“He”+”llo”“Hello”
+  正数  加法  字符串连接
-  负数  减法
*  乘法
/  除法
%  取余数
++ 自加
-- 自减

1.example:

+正数 加法 字符串连接

  int a=1;
        int b=2;
        double e=12.21;
        char c='a';
        String s="22";
        System.out.println(a+b);//数值+数值=数值
        System.out.println(c+b);//字符+数值=数值
        System.out.println(e+s);//数值+字符串=字符串
        System.out.println(b+e);/***有多种类型的数据混合运算时,
                                 系统首先自动的将所有数据转换成
                                 容量最大的那一种数据类型
                                 ,然后再进行计算***/

结果:

3
99
12.2122
14.21

有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算

-负数 减法

int d = -10;
        System.out.println(a+d);
 //结果 -9

* % 数值与数值(char)

 System.out.println(b%a);//取余数  判断两个数是否整除则结果为零即余数为零

++自增1 --自减1

 int x=5;
        x++; //x=x+1 6
        ++x; //x=x+1 7

        --x;//x=x-1 6
        x--;//x=x-1 5
        System.out.println(x); //输出位5

        int k=5;
        int l = k++ + 1; //注意: ++在混合运算中 ++在后先运算后自增
                         //++在前先自增后运算
        System.out.println(l); //输出为6
        System.out.println(k);//输出为6

++在混合运算中 ++在后先运算后自增 ++在前先自增后运算

比较运算符

==,!=,基本类型数值与数值之间的比较,引用类型与引用类型之间的比较

> < >= <= 数值与数值(char)

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue
int a=10;
int b=5;
System.out.println(a==b);//输出 false  //基本类型数值之间的比较
System.out.println(a!=b);//输出 true

String s = "ab";
String s1 = "ab";
System.out.println(s==s1);//输出 true     //引用类型与引用类型比较
System.out.println(s!=s1);//输出 false

字符型

  char c = 'a'; //97
        System.out.println('a'>'b');
        System.out.println('a'>=c);

逻辑运算符

&—逻辑与 | —逻辑或 !—逻辑非

&& —短路与 || —短路或 ^ —逻辑异或

与运算&& . & 有0即为零

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

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

& 遇到第一个false后面,后面继续运行

int a = 10;
int b = 5;
int c  = 15;
System.out.println(a<b & ++b<c);//false & true = false
         System.out.println(b); //b=6

b=6


&&遇到第一个false后面,后面则不运行继续运行

int a = 10;
int b = 5;
int c  = 15;
 System.out.println(a<b && ++b<c);//false & true = false
         System.out.println(b); //b=5

b=5

与运算|| . | 有0即为零

| 遇到第一个true后,后面的表达式还会执行
|| 遇到第一个true后,就会短路后面的表达式不会执行==

int a = 10;
int b = 5;
int c  = 15;
System.out.println(a>b | b<c);//true | true = true
System.out.println(a>b | b>c);//true | false = true
System.out.println(a<b | b>c);//false | false = false

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

异或( ^ ):

  • 当左右都为true时,结果为false。
  • 理解:异或,追求的是“异”!

赋值运算符

char short char->int ->long ->flaot->double

=

注意:两边类型与值匹配~~int a=10;

基本数据类型转换:默认转换,强制类型转换

long b = a;
byte c = (byte)b;

用法举例等效的表达式
a += ba = a+b
a -= ba = a-b
a *= ba = a*b
a /= ba = a/b
a %= ba = a%b

判断:

    short s = 3;
    (1) s =s+2;
    (2) s += 2; 
System.out.println(s);

对于(1)来说:S+2运算时会自动提升变表达式的类型,所以结果是int类型的,在赋值给short形的s,编译器会将报告:需要强制转换类型错误

对于(2)由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以理解为正确.


区分好==和=的区别。即===

  • 一个等号 对值的比较 Java中相当于赋值
  • 两个等会java中相当于 if判断
  • 三个等号在java中没有,但是在JavaScript
  1. ==,两边值类型不同的时候,要先进行类型的转换,再比较。

  2. ==,不做类型转换的时候,类型不同的一定不等。

    ==是非严格相等运算符:只比较值是否相等

    ===是严格相等运算符:既比较值是否相等还比较类型是否相等

条件运算符

(条件表达式)? 表达式1:表达式2;

  • 为true,运算后的结果是表达式1;

  • 为false,运算后的结果是表达式2;

  • 表达式1和表达式2为同种类型

  int a = 10;
        int b = 5;
        int c  = (a>b)?a:b; //需要返回一个结果
        System.out.println(c);  //输出 10

位运算

特点:使用位运算可以大量减少运行开销

是二进制位(bit位) 上的运算, 执行效率高

  • << 左移 左移1位相当于*2
  • >> 右移
  • >>>无符号右移 不需要关心高位上的符号 (如果影响到了符号位,只需要在符号位补0)
  int a = 2;
        System.out.println(a<<2);// 输出8

最有效率的方法求出2乘几等于8 2<<3,
因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移
3位即可,而位运算cpu直接支持的,效率最高,所以,2乘剩以8等於几的最效率的方法是2<<3

&与运算 二进制位进行&运算,只有1&1时结果是1,否则是0;
|或运算 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^相同二进制位进行 ^ 运算,结果是0;1**^1=0 , 0^0=0不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1**
~正数取反,各二进制码按补码各位取反负数取反,各二进制码按补码各位取反
练习

int a=5,b=10; 把a与b的值交换(仅使用a,b两个变量)

	   int a = 10;
        int b = 5;

       /* a = a+b; //a=10+5 = 15
        b = a-b;//b=15-5 =10
        a = a-b;

        System.out.println(a);
        System.out.println(b);*/

        /*
           1010
           0101
           1111  a^b 15  用两个数异或后的结果 与其中一个值进行异或操作 其值等于另一个值.
           0101
           1010
         */
        a = a^b;
        System.out.println(a);
        b = a^b;
        System.out.println(b);
        a=a^b;
        System.out.println(a);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,SE3是一个表示欧几里得空间中的三维刚体变换的类。SE3代表了一个旋转和平移的组合,通常用于描述机器人的位姿。SE3类提供了一系列方法和操作符,用于对刚体变换进行计算和应用。 在引用中,通过机器人工具箱的正运动学函数得到的变换矩阵P的数据类型是SE3。然而,SE3数据类型不能直接用于运算,因此需要通过P = P.T的操作将其转换为double数据类型,以便进行后续的计算和使用。 引用中提到了创建一个SerialLink对象rob,并使用给定的机器人模型参数创建了一个修改后的机器人。这个SerialLink对象是机器人工具箱中的一个类,用于模拟和操作机器人的运动学和动力学。 在引用中,使用rob.plot方法绘制了机器人的姿态。plot方法用于在三维空间中可视化机器人的运动轨迹和姿态。 综上所述,SE3在Matlab中是用来表示三维刚体变换的类,可以通过机器人工具箱进行计算和应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Matlab 机器人工具箱中SE3是什么,如何转换成double](https://blog.csdn.net/weixin_45656206/article/details/128557989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值