JAVA----基本类型与运算

这篇具有很好参考价值的文章主要介绍了JAVA----基本类型与运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Java提供了哪些基本数据类型?

二、在Java语言中null值是什么?在内存中null是什么?

三、如何理解赋值语句String x=null?

四、int和Integer有什么区别?

五、什么是不可变类

六、在Java语言中,类型转换有哪几种类型?

(1)类型自动转换

(2)强制类型转换

七、 强制类型转换的注意事项有哪些?

八、Math类中round、ceil和floor方法的功能各是什么?

九、++i与i++有什么区别?


一、Java提供了哪些基本数据类型?

        Java语言一共提供了8种原始的数据类型(byte,short,int,long,float,double,char,boolean),这些数据类型不是对象,而是Java语言中不同于类的特殊类型,这些基本类型的数据变量在声明之后就会立刻在栈上被分配内存空间。

        除了这8种基本的数据类型外,其他类型都是引用类型(例如类、接口、数组等),引用类型类似于C++中的引用或指针的概念,它以特殊的方式指向对象实体,这类变量在声明时不会被分配内存空间,只是存储了一个内存地址而已。

        此外,Java语言还提供了对这些原始数据类型的封装类(字符类型Character,布尔类型Boolean,数值类型Byte、Short、Integer、Long、Float、Double)。

        需要注意的是,Java中的数值类型都是有符号的,不存在无符号的数,它们的取值范围也是固定的,不会随着硬件环境或者操作系统的改变而改变。除了以上提到的8种基本数据类型以外,在Java语言中,还存在另外一种基本类型void,它也有对应的封装类java.lang.void,只是无法直接对它进行操作而已。

封装类型和原始类型有许多不同点:

        首先,原始数据类型在传递参数时都是按值传递,而封装类型是按引用传递的。

        其次,当封装类型和原始类型用作某个类的实例数据时,它们所指定的默认值不同。对象引用实例变量的默认值为null,而原始类型实例变量的默认值与它们的类型有关(例如int默认初始化为0)

二、在Java语言中null值是什么?在内存中null是什么?

        null不是一个合法的Object实例,所以编译器并没有为其分配内存,它仅仅用于表明该引用目前没有指向任何对象。其实,与C语言类似,null是将引用变量的值全部置0。

三、如何理解赋值语句String x=null?

        在Java语言中,变量被分为两大类型:原始值(primitive)与引用值(reference)。声明为原始类型的变量,其存储的是实际的值。声明为引用类型的变量,存储的是实际对象的地址(指针,引用)。对于赋值语句String x=null,它定义了一个变量“x”,x中存放的是String引用,此处为null。

四、int和Integer有什么区别?

        Java语言提供两种不同的类型,即引用类型和原始类型(或内置类型)。int是Java语言的原始数据类型,Integer是Java语言为int提供的封装类。Java为每个原始类型提供了封装类。
引用类型与原始类型的行为完全不同,并且它们具有不同的语义。而且,引用类型与原始类型具有不同的特征和用法。

五、什么是不可变类

        不可变类是指当创建了这个类的实例后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了。它有点类似于常量(const),即只允许别的程序读,不允许别的程序进行修改。

在Java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等。此外,String也是不可变类。

要创建一个不可变类需要遵循下面5条基本原则:
1)类中所有成员变量被private所修饰。
2)类中没有写或者修改成员变量的方法,例如setxxx,只提供构造函数,一次生成,永不改变。
3)确保类中所有方法不会被子类覆盖,可以通过把类定义为final或者把类中的方法定义为final来达到这个目的。
4)如果一个类成员不是不可变量,那么在成员初始化或者使用get方法获取该成员变量时,需要通过clone方法来确保类的不可变性。
5)如果有必要,可使用覆盖Object类的equals()方法和hashCode()方法。在equals()方法中,根据对象的属性值来比较两个对象是否相等,并且保证用equals()方法判断为相等的两个对象的hashCode()方法的返回值也相等,这可以保证这些对象能被正确地放到HashMap或HashSet集合中。

六、在Java语言中,类型转换有哪几种类型?

(1)类型自动转换

低级数据类型可以自动转换为高级数据类型

当类型自动转换时,需要注意以下几点:
1)char类型的数据转换为高级类型(如int,long等),会转换为其对应的ASCII码。
2)byte、char、short类型的数据在参与运算时会自动转换为int型,但当使用“+=”运算时,就不会产生类型的转换
3)另外,在Java语言中,基本数据类型与boolean类型是不能相互转换的。
总之,当有多种类型的数据混合运算时,系统会先自动地将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

(2)强制类型转换

当需要从高级数据类型转换为低级数据类型时,就需要进行强制类型转换

需要注意的是,在进行强制类型转换时可能会损失精度。

七、 强制类型转换的注意事项有哪些?

        Java语言在涉及byte、short和char类型的运算时,首先会把这些类型的变量值强制转换为int类型,然后对int类型的值进行计算,最后得到的值也是int类型。因此,如果把两个short类型的值相加,最后得到的结果是int类型;如果把两个byte类型的值相加,最后也会得到一个int类型的值。如果需要得到short类型的结果,就必须显式地把运算结果转换为short类型

例如对于语句short s1=1;s1=s1+1

由于在运行时会首先将s1转换成int类型,因此s1+1的结果为int类型,这样编译器会报错,所以,正确的写法应该short s1=1;s1=(short)(s1+1)。

有一种例外情况。“+=”为Java语言规定的运算法,Java编译器会对其进行特殊处理,因此,语句short s1=1;s1+=1能够编译通过

八、Math类中round、ceil和floor方法的功能各是什么?

1)round方法表示四舍五入。round,意为“环绕”,其实现原理是在原来数字的基础上先增加0.5然后再向下取整,等同于(int)Math.floor(x+0.5f)。它的返回值类型为int型,例如,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11
2)ceil方法的功能是向上取整。ceil,意为“天花板”,顾名思义是对操作数取顶,Math.ceil(a),就是取大于a的最小的整数值。需要注意的是,它的返回值类型并不是int型,而是double型。若a是正数,则把小数“入”,若a是负数,则把小数“舍”。

Math.ceil(12.5)的结果为13

Math.ceil(-12.5)的结果为-12
3)floor方法的功能是向下取整。floor,意为“地板”,顾名思义是对操作数取底。Math.floor(a),就是取小于a的最大的整数值。它的返回值类型与ceil方法一样,也是double型。若a是正数,则把小数“舍”;若a是负数,则把小数“入”。

Math.floor(12.5)的结果为12,

Math.floor(-11.5)的结果为-12

九、++i与i++有什么区别?

在编程时,经常会用到变量的自增或自减操作,尤其在循环中用得最多。以自增为例,有两种自增方式:前置与后置,即++i和i++,它们的不同点在于i++是在程序执行完毕后进行自增,而++i是在程序开始执行前进行自增

i=1 ,i++ + i++ =?,i++ + ++i=?,

i++ + i++ +i++=

表达式i+++i++首先执行第一个i++操作,由于自增操作会稍后执行,因此,运算时i的值还是1,但自增操作后,i的值变为了2,接着执行第二个i++,运算时,i的值已经为2了,而执行了一个自增操作后,i的值变为了3,所以i+++i++=1+2=3,而运算完成后,i的值变3。

表达式i++ + ++i首先执行第一个i++,但是自增操作会稍后执行。因此,此时i的值还是3,接着执行++i,此时i的值变为4,同时还要补执行i++的自增操作,因此此时i的值变为5,所以i+++++i=3+5=8。

同理,i+++i+++i++=5+6+7=18。文章来源地址https://www.toymoban.com/news/detail-591594.html

到了这里,关于JAVA----基本类型与运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA中char类型加减乘除运算表达式返回类型

    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。 那么如果表达式中参与运算的 均为char类型 ,那么表达式返回的类型是什么呢? 经过简单测试,是 int类型 。 这个问题是在调用StringBuilder.appen

    2024年02月08日
    浏览(55)
  • 【JAVA】数据类型,类型转换与提升,运算符,标识符命名规则

    🍉内容专 栏:【JAVA从0到入门】 🍉本文脉络:数据类型,类型转换与提升,运算符,标识符命名规则 🍉本文作者:Melon_西西 🍉发布时间 :2023.7.12 目录  1. 字面常量 2. 数据类型:四类八种  3.类型转换 3.1 自动类型转换(隐式) 自动类型转换: 3.2 强制类型转换(显式) 强制类

    2024年02月15日
    浏览(46)
  • 〔002〕Java 基础之语法、数据类型、进制转换、运算符

    注释: 是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的 注释分为 单行注释 和 多行注释 ,注释的内容并不会被编译,所以 不会影响 代码的运行 单行注释通过 // 进行标注,只能注释一行 多行注释通过 /* 注释内容 */ 进行标注,可以注释多

    2024年02月05日
    浏览(78)
  • 初识Java篇(JavaSE基础语法)(1)(数据类型+运算符)

     个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客 目录 前言:  初识Java  运行Java程序 注释 标识符 数据类型与变量  字面常量 数据类型 变量 类型转换  类型提升  字符串类型  运算符 算术运算符  关系运算符  逻辑运

    2024年03月24日
    浏览(51)
  • 图灵日记之java奇妙历险记--数据类型与变量&&运算符

    看下面这个栗子,宝子们 输出的\\\"cheer up!!!\\\"就是字面变量 字面常量的值在程序的整个生命周期中是不变的 字面常量的分类: 字符串常量 整形常量 浮点数常量 字符常量 布尔常量:只有两种true和false 空常量 注意:字符串,整形,浮点型,字符型以及布尔型,在java中都被叫作数据类型

    2024年02月04日
    浏览(44)
  • Java 中数组的排序(基本类型,对象类型)

    前言: 本文主要针对的是 Java 自带的排序函数/接口 实现 Comparable 接口中的 compareTo 函数或实现 Comparator 接口中的 compare 函数 两者存在使用上的区别,大体而言,Comparable 接口是为类服务,Comparator 接口是为 sort (Arrays.sort / Collections.sort)方法服务 基本类型存在很多种,这里举

    2024年02月07日
    浏览(34)
  • Java基本数据类型

    Java是一种强类型语言,它有八种基本数据类型,分为三类:整型、浮点型和字符型。如何选择适当的数据类型是一个程序员需要考虑的重要问题。在本文中,我们将详细介绍Java的基本数据类型,以及它们在程序中的应用。 整型数据类型表示整数。Java有四种整型数据类型,分

    2023年04月09日
    浏览(41)
  • Java--基本数据类型

    在Java中,一共有8种基本类型,其中有4种整形,2种浮点类型,1种字符类型char(用于表示Unicode编码的代码单元)和一种表示真值bloolean类型。 1、整形 整形用于表示没有小数部分的数值,允许是负数。Java提供了4种整形。 在通常情况下,int 类型最常用。但如果想要表示整个地

    2024年02月11日
    浏览(48)
  • 【Java SE】基本数据类型

    大家好!我是保护小周ღ,本期为大家带来的是 Java的基本数据类型,内容会与C语言的基本数据类型进行基本的比较,数据类型提示,整型提升,以及简单了解 String 类型 ,进一步感受Java 的安全性。 C语言混不下去了,面向对象的编程太爽了~ 目录 一、常量 二、基本数据类

    2024年02月11日
    浏览(35)
  • java基本数据类型取值范围

    在JAVA中一共有八种基本数据类型,他们分别是  byte、short、int、long、float、double、char、boolean  整型  其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样  byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)  short的取值范围为-32768~32767,占用

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包