首页 > 其他分享 >day02

day02

时间:2024-09-19 21:48:18浏览次数:1  
标签:右移 int day02 数据类型 运算符 num 移动

Java第二天

变量与数据类型

Java是一门强类型语言,每种数据都定义了明确的数据类型。不同的数据类型在内存中占用不同大小的空间。

变量:指的是在java程序运行过程中,其值可以发生改变的量

定义一个变量的语句定义格式:
    数据类型 变量名 = 初始化值;

数据类型:
    基本数据类型:
        整数类型:    所占的字节数       可表示的范围
            byte        1               -2^7 ~ 2^7-1
            short       2               -2^15 ~ 2^15-1
            int         4               -2^32 ~ 2^32-1
            long        8               -2^63 ~ 2^63-1
        小数类型:
            float       4
            double      8
        布尔类型:
            boolean     1
        字符类型:
            char        根据具体的编码来定,不同的编码下,java中一个字符所占的字节数是不同的
    引用数据类型:


 使用变量的注意事项:
    1、变量要进行初始化赋值,才可以进行使用
    2、在同一作用域下,变量名不能重复,可以大小写不一样,严格区分大小写的。
    3、java中整数默认是int类型,要想定义一个long类型的变量,需要在值的末尾加上L或者l,推荐使用L
    4、java中小数默认是double类型,要想定义一个float类型的变量,需要在值的末尾加上F或者f,推荐使用F

在java中,变量参与运算的时候,会先自动提升数据类型
自动数据类型转换:
byte,short,char -> int -> long -> float -> double
强制数据类型转换:
语句定义格式:
目标数据类型 变量名 = (目标数据类型)(要转型的值或表达式)
注意:今后尽量不要用,可能会损失精度。

补码

计算机中的数据都是采用补码进行运算的

ASCII码

注意:
1、+ 号两边若都没有字符串,这个就是最普通的算数加法运算
2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换
记住三个特殊的字符对应的ASCII码值:
'0' - 48
'A' - 65
'a' - 97
3、同级别优先级的符号,从左向右进行运算
4、+ 号两边若任意一边是字符串,而是做字符串的左右拼接操作,拼接结束后是一个新的字符串
运算符
Java提供了丰富的运算符,包括算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和三目运算符。

算术运算符

+:加法、正数、字符串连接
-:减法
*:乘法
/:除法,需要注意整数除法只能得到整数结果
%:求余

赋值运算符

=
+=、-=、*=、/=、%=

关系运算符

==、!=:等于、不等于

、<、>=、<=:大于、小于、大于等于、小于等于

逻辑运算符

&、|:逻辑与、逻辑或
&&、||:短路与、短路或
^:逻辑异或

位运算符

<<、>>、>>>:左移、右移、无符号右移
&、|、^:位与、位或、位异或
~:位取反

三目运算符

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

条件语句

Java提供了if和switch两种选择结构语句。

if语句

单分支:if (条件)
双分支:if (条件) {} else {}
多分支:if (条件1) {} else if (条件2) {} else {}

switch语句

基于表达式的值进行匹配,可以匹配整数、字符、字符串或枚举。

位运算符

在Java中,位移运算符是用来对整数类型的数据(如byte、short、int、long)进行二进制位操作的。位移运算符包括左移(<<)、右移(>>)和无符号右移(>>>)。下面将分别介绍这三种位移运算符的差异、使用方法和具体案例。

左移(<<)

差异:左移运算符将操作数的二进制表示向左移动指定的位数,右侧空出的位补0。

使用方法<< 后面跟的数字表示要向左移动的位数。

案例

int num = 5; // 二进制表示为 101
int result = num << 2; // 将 num 向左移动 2 位,变为 101000,即 40
System.out.println(result); // 输出:40

右移(>>)

差异:右移运算符将操作数的二进制表示向右移动指定的位数,左侧空出的位使用符号位填充(即保留符号位)。

使用方法>> 后面跟的数字表示要向右移动的位数。

案例

int num = -5; // 二进制表示为 11111111111111111111111111111011(32位补码表示)
int result = num >> 2; // 将 num 向右移动 2 位,变为 11111111111111111111111111111101,即 -2
System.out.println(result); // 输出:-2

无符号右移(>>>)

差异:无符号右移运算符将操作数的二进制表示向右移动指定的位数,左侧空出的位无论符号位是什么都补0。这种移动方式用于无符号数或正数,对于负数,其效果可能与右移不同。

使用方法>>> 后面跟的数字表示要向右移动的位数。

案例

int num = -5; // 同上,二进制表示为 11111111111111111111111111111011
int result = num >>> 2; // 将 num 向右移动 2 位,左侧空位补0,变为 11111111111111111111111111111111,即 1073741821
System.out.println(result); // 输出:1073741821

总结

  • 左移(<<):向左移动,右侧补0,相当于乘以2的n次方(n为移动位数)。
  • 右移(>>):向右移动,左侧补符号位,相当于除以2的n次方并向下取整(n为移动位数)。
  • 无符号右移(>>>):向右移动,左侧补0,适用于无符号数,相当于除以2的n次方(n为移动位数)。

位移运算符在处理位操作、优化性能和实现某些算法时非常有用。

标签:右移,int,day02,数据类型,运算符,num,移动
From: https://www.cnblogs.com/flxf/p/18421422

相关文章

  • Java 学习 day02
    javaday02DtaaType数据类型Java是一门强类型的语言。1、变量变量:指的是在Java程序运行过程中,其值可以发生改变的量。定义一个变量的语句定义格式://数据类型变量名=初始化值;注意事项:1、变量要进行初始化赋值,才可以进行使用2、在同一作用域下,变量名不能重复,可以大小......
  • day02
    数据类型1.整形short占用2B内存int占用4B内存longwin系统占用4B内存Linux下(32位OS)占用4B内存(64位OS)占用8B内存longlong占用8B内存2.sizeof关键字#include<iostream>usingnamespacestd;intmain(){shortnumber=10;cout<<"short类型占用......
  • javascript-day02
    02-BOM-01-window的对话框<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docu......
  • jdbc-day02-dao
    dao_impl_EmployeeDaoImplpackagecom.youcai.emp.dao.impl;importcom.youcai.emp.dao.EmployeeDao;importcom.youcai.emp.util.DruidUtil;importcom.youcai.emp.vo.Employee;importjava.sql.Connection;importjava.sql.Date;importjava.sql.PreparedStatement......
  • 网络编程day02(字节序、TCP编程)
    目录【1】字节序1》大小端转换2》端口转换  3》IP地址转换主机字节序转换为网络字节序(小端序->大端序)网络字节序转换为主机字节序(大端序->小端序) 【2】TCP编程1》流程2》函数接口1> socket2>bind3>listen4>accept 5>recv 6>connect7>send 3》代......
  • C++复习day02
    一、库函数的模拟实现1.memcpy的使用和模拟首先先来了解一下memcpy函数的作用是什么?void*memcpy(void*destination,constvoid*source,size_tnum);函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。这个函数在遇到‘\0......
  • day02-面向对象-多态&抽象类&接口
    一、⭐多态⭐1.1概述1.多态  是在继承/实现情况下的一种现象,表现为对象多态和行为多态​2.⭐对象多态写法:​继承:父类变量=new子类1();​父类变量=new子类2();实现:接口变量=new实现类();​......
  • day02(IO进程)文件IO
     目录一.什么是文件IO1.1概念1.2特点1.3操作二.函数接口2.1打开文件open()2.2关闭文件close()2.3读写文件2.3.1读文件read()2.3.2写文件write()练习:cp功能2.4文件定位操作标准IO和文件IO总结练习:实现“head-n文件名”命令的功能一.什么是文件......
  • (苍穹外卖)day02 员工管理 分类管理
    目录一.新增员工1.需求分析和设计2.代码开发3.功能测试4.代码完善二.员工的分页查询1.需求分析和设计2.代码开发3.功能测试与代码完善三.启用禁用员工账号 1.需求分析和设计 2.代码开发四.编辑员工1.需求分析和设计2.代码开发五.导入模块功能代码一.新......
  • Day02
    打开CMD的方式1.开始+系统+命令提示符2.Win键+R输入CMD打开控制台(推荐)3.在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器的地址栏前面加CMD路径常用的Dos命令#盘符切换:(英文)D:回车#查看当前目录下的所有文件:dir回车#切换目录:1.跨盘符......