首页 > 编程语言 >Java数据类型与运算符

Java数据类型与运算符

时间:2024-09-28 22:22:08浏览次数:9  
标签:Java String int 数据类型 System 运算符 println public out

前言

Java是一种广泛使用的编程语言,它以其“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA)的理念而闻名。Java的学习将伴随着该文章展开!!

一.数据类型

Java的数据类型大体与C语音相类似,又有些许不同,且听我道来。

基本数据类型分为整型,字符型,浮点型以及布尔类型

 1.1.整型int

int 类型的包装类类型为Integer。所谓包装类就是基本数据类型对应的类类型,可以理解为int类型的plus版本!具备更多功能。

int 在Java中占4个字节 范围在-2的31次方到2的31次方-1之间。我们可以通过求类型的范围最大最小值来验证。 在idea编译器中输入大写MAX回车可以快捷算最大值。

public class test {
    public static void main(String[] args) {
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);
    }

这个数字相信大家并不陌生! 

1.2.长整型long

long类型占8个字节,在Java中没有x86与x64的区分,这也体现了Java的可移植性

"Write Once, Run Anywhere"  long类型范围在-2的63次方到2的63次方-1之间。

long类型的包装类型为Long;

需要注意的是在Java中定义long类型数据需要使其变为一个字面常量(如下),否则会默认成int类型!

public static void main(String[] args) {
        long a=10L;
        System.out.println(a);
    }

这就涉及到类型转换的问题 :

public static void main(String[] args) {
        long a=10L;
        int b = 20;
        b=a;
        System.out.println(a);
    }

由于int 范围大小小于long类型,所以会发生不兼容(数据损失)的情况报错!

long l = 2147483648L;
int i = (int) l; // 强制转换,可能会导致数据丢失

此时若是强制类型转化,就会导致数据丢失! 打印数据如下,为什么会打印负数呢?让我用一张图来帮你解除疑惑。

可以理解为,当发生溢出时,int范围的最大值就向圆的另一边走 !

 

1.3.短整型short 

 short类型内存占用2字节!范围为-32768到32767,包装类类型为Short。

除了int与char类型的包装类不是首字母大写!其余都是首字母大写

少于四个字节的运算会提升为四个字节再运算!

public static void main(String[] args) {
        short a=10;
        short b=20;
        short c=a+b;
        System.out.println(c);
    }

 

需要转化字符类型如下:

public static void main(String[] args) {
        short a=10;
        short b=20;
        short c=(short)(a+b);
        System.out.println(c);
    }

 

1.4.字节型byte

内存占用1字节,范围在-128到127之间,包装类是Byte。

强制类型转换存在隐患

若是int转为byte

public static void main(String[] args) {
        byte a = 10;
        int b =  128;
        a = (byte)b;
        System.out.println(a);
    }

打印-128 ,发生了溢出

若是byte转为int

public static void main(String[] args) {
        byte a = 10;
        int b =  128;
        b = (int)a;
        System.out.println(a);
    }

打印10 ,因为int 的范围大于byte,所以不会发生溢出!

2.字符型char

char类型与C语言不同,内存占用为2字节,这也意味着char类型可以存储中文中文也是两个字节),大小范围在0到65535,可以发现char是没有负数的,当然这也符合我们的认知。需要注意的是char的包装类类型为Character。

public static void main(String[] args) {
        char a='鱼';
        System.out.println(a);
    }

 

3.1单精度浮点数 float

3.2双精度浮点数double

float类型的内存占用4个字节,double类型为8个字节。他们是有大小范围的,但一般不关注!

public static void main(String[] args) {
        float f = 12.5;
    }

知识点接上文,为什么会报错呢?答案是float类型定义时默认为double类型,是八字节的,若没有将其变为一个float类型的字面常量,数据会发生损失。 

 

public static void main(String[] args) {
        float f = 12.5F;
    }

 

4.布尔型boolean

boolean 只有两个可能的值:truefalse。而 Booleanboolean 的包装类,它是一个对象,可以包含 null 值。boolean类型没有明确规定内存占用,范围也只为true和false。

boolean primitiveBool = true;
Boolean objectBool = primitiveBool; // 自动装箱
boolean anotherPrimitiveBool = objectBool; // 自动拆箱

Java中并没有所谓的0为假,非0为真。 

引用数据类型有String,类,接口,数组等……

5.String类型

5.1

String类型可以进行拼接如:

public static void main(String[] args) {
        String a="hello";
        String b="world";
        System.out.println(a+b);
    }

打印结果为helloworld

我们可以进行一些格式的输出:

public static void main(String[] args) {
        int a=10;
        int b=20;
        System.out.println("a+b="+a+b);
    }

 

public static void main(String[] args) {
        
        int a=10;
        int b=20;
        System.out.println("a+b="+(a+b));
    }

 

public static void main(String[] args) {
        
        int a=10;
        int b=20;
        System.out.println(a+b+"=a+b");
    }

 

 相信聪明的你一眼就能看出打印的结果啦!

5.2

int类型转化为Sting类型如下:

public static void main(String[] args) {
        int a=1234;
        String s=a+"";
        System.out.println(s);
    }

这样打印出的1234就是一个字符串啦! 

String转为int呢?

只需要用包装类加valueOf  如下:

public static void main(String[] args) {
        String v = "1234";
        int ret = Integer.valueOf(v);
        int ret2 = Integer.parseInt(v);
        System.out.println(ret);
        System.out.println(ret2);
    }

用parseInt也是同样效果! 

 

 
二.运算符

 

1.算术运算符 /   %

加减乘除都是小学生的知识了,这里我们对除法和取模做一些分析。

public static void main(String[] args) {
        System.out.println(5/0);
    }

 除数不能为0,否则会出现算数异常

 %

public static void main(String[] args) {
       
        System.out.println(5%3);
        System.out.println(-5%3);
        System.out.println(-5%-3);
        System.out.println(5%-3);

    }

 

与C语言不同,Java中取模可以是小数!

System.out.println(11.5%2.5);

2.增量运算符+=

在Java中  增量运算符相当于帮你强转了!

public static void main(String[] args) {
        int a=10;
        long b=20;
        a+=b;
        System.out.println(a);
    }

3.关系运算符 ==   !=

关系运算符还有大于小于等,这里不做列举。

public static void main(String[] args) {
        int a=10;
        int b=20;
        System.out.println(a==b);
        System.out.println(a!=b);
    }

 

4.逻辑运算符

逻辑运算符主要有三个: &&  ||   ! ,运算结果都是 boolean类型。与C语言逻辑类似,都会出现短路,这里不做详细介绍。

5.重点:位运算符

位运算符主要有四个: &   |   ^     ~  ,除 ~ 是一元运算符外,其余都是二元运算符。

5.1   & 按位与

若两个数的二进制位都为1,则结果为1,否为0;

public static void main(String[] args) {
        int a=12;
        int b=5;
        System.out.println(a&b);
    }

 

&也可以当作&&使用,但它不会发生短路,下文的|也类似。

5.2  | 按位或

若两个数的二进制位都为0,则结果为0,否则为1;

5.3  ^按位异或

若两个数的二进制位相同则为0,否则为1;

5.4 ~按位取反

顾名思义

6. 移位运算

6.1左移 <<

二进制位最左侧位丢弃, 最右侧补 0.

6.2右移>>

二进制位最右侧位丢弃, 最左侧补 符号位.

6.3无符号右移 >>>

最右侧位不要了, 最左侧补 0.

7.

好了你已经学会了,动手看看这些题目吧!、

1.求两个数二进制不同的位数

例如 19与9

法一:

利用按位异或,两数按位异或的值的二进制位中1的个数就是不一样的个数!

public static void main(String[] args) {
        int a=19, b=9;
        int count = 0;
        int n = a^b;
        for (int i = 0; i < 32; i++)
        {
            if (((n >> i) & 1) == 1)
                count++;
        }
        System.out.println(count);
    }

法二:

public static void main(String[] args) {
        int m=19;
        int n=9;
        int tmp = m^n;
        int count = 0;
        while(tmp!=0)
        {
            tmp = tmp&(tmp-1);
            count++;
        }
        System.out.println(count);
    }

 

2.打印整数二进制的奇数位和偶数位

例如19

public static void main(String[] args) {
        int num=19;
        for(int i=31; i>=1; i-=2)
        {
            System.out.print((num>>i)&1);
        }
        System.out.printf("\n");
        for(int i=30; i>=0; i-=2)
        {
            System.out.print((num>>i)&1);
        }

    }

 

3.还想了解其他题目可以关注小编!鲤鱼王打挺-CSDN博客给小编多多支持!

标签:Java,String,int,数据类型,System,运算符,println,public,out
From: https://blog.csdn.net/2401_83779763/article/details/142619870

相关文章

  • 华为OD机试2024年E卷-转骰子[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )实
    题目描述骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(......
  • 华为OD机试2024年E卷-矩阵匹配[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )
    题目描述从一个N*M(N≤M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述输入矩阵要求:1≤K≤N≤M≤150输入格式:NMKN*M矩阵输出描述N*M的矩阵中可以选出M!/N!种组合数组,每个组合......
  • MySQL 数据类型详解
    在MySQL数据库中,数据类型的选择对性能和存储效率有着至关重要的影响。选择正确的数据类型可以最大限度地利用资源,并提高查询速度。一、数值类型详解数值类型用于存储数字数据,根据数据范围和精度需求,MySQL提供多种整数和浮点数类型。1.整数类型类型大小(字节)范围性能用途......
  • 计算机毕业设计 智能旅游推荐平台的设计与实现 Java实战项目 附源码+文档+视频讲解
    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌......
  • 友元运算符重载函数
    目录1.定义友元运算符重载函数的语法形式2.双目运算符重载3.单目运算符重载1.定义友元运算符重载函数的语法形式        (1)在类的内部,定义友元运算符重载函数的格式如下:friend函数类型operator运算符(形参表){函数体}        (2)在类中,声明友......
  • javaweb学习4
    今天主要学习了获取数据库连接的操作和mavenmaven导入mysql和druidjar包具体的jar坐标可以去这个网站找https://mvnrepository.com/<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId......
  • java字符串连接和运算符优先级
    源代码:publicclassEnumTest{publicstaticvoidmain(String[]args){intx=100;inty=200;System.out.println("x+y="+y+x+y);System.out.println(x+y+"=x+y");}}程序输出:x+y=200100200300=x......
  • java之使用CompletableFuture入门1
    Java17- 简介JDK中异步执行任务。源码://AFuturethatmaybeexplicitlycompleted(settingitsvalueandstatus),//andmaybeusedasaCompletionStage,supportingdependentfunctions//andactionsthattriggeruponitscompletion.publicclassCo......
  • 基于JavaWeb技术的在线考试系统设计与实现(11551)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • Javax Validation 自定义注解校验(身份证号校验)
    一、场景分析我们使用SpringMVC在Controller层,对身份证号进行数据校验的话,经常采用以下方式:@RestController@RequiredArgsConstructor@RequestMapping("member")publicclassMemberController{//身份证号码正则表达式Stringregex="^(^[1-9]\\d{5}(18|......