首页
学习
活动
专区
圈层
工具
发布

Java基础核心知识点梳理:语法、规范与数据类型

数据类型分为两大类:基本数据类型和引用数据类型,核心区别是存储方式不同(基本类型存值,引用类型存地址)。 1....基本数据类型(8种,重点掌握) 基本数据类型直接存储数据值,分为4类8种,具体如下表: 类型分类 数据类型 占用空间 默认值 取值范围/说明 整数型 byte 1字节 0 -128 ~ 127 整数型...short 2字节 0 -32768 ~ 32767 整数型 int(默认) 4字节 0 -2³¹ ~ 2³¹-1(约21亿) 整数型 long 8字节 0L -2⁶³ ~ 2⁶³-1,赋值需加L后缀...,用单引号包裹,例如 'A'、'中' 布尔型 boolean 不确定(JVM未规定) false 只有两个值:true(真)、false(假),用于条件判断 2....自动装箱与拆箱 为了方便基本类型与对应引用类型的转换,Java提供了自动装箱(基本类型 → 包装类)和拆箱(包装类 → 基本类型)机制。

23410

【Java 基础篇】Java 数据类型

整型(Integral Types) 整型用于表示整数值,包括不同范围和长度的数据类型。以下是Java中的整型数据类型: byte:占用8位(1字节)的有符号整数类型,范围为-128到127。...short:占用16位(2字节)的有符号整数类型,范围为-32768到32767。 int:占用32位(4字节)的有符号整数类型,范围为-2147483648到2147483647。...long:占用64位(8字节)的有符号整数类型,范围为-9223372036854775808到9223372036854775807。...布尔型(Boolean Type) 布尔型用于表示逻辑值,只有两个取值:true和false。Java使用boolean关键字表示布尔型数据类型。...类型转换分为两种:隐式类型转换(自动转换)和显式类型转换(强制转换)。 1. 隐式类型转换 隐式类型转换是指在不丢失数据精度的情况下,将一种类型的值赋给另一种类型的变量。这种转换是自动进行的。

49430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 中的变量类型、拆箱装箱及相互间的转换

    成员变量 1.2.2 局部变量 二、拆箱与装箱机制 一个 String 的例子 三、相互间的转换 一、Java 中变量类型 1.1 以数据类型划分 1.1.1 基本数据类型 整数型变量 变量名 说明...byte 1字节,包装类为Byte short 2字节,包装类为Short int 4字节,包装类为Integer long 8字节,赋值常量后面加L,包装类为Long 注意:1字节是8byte,以int...为例,范围是[-2^31, 2^31-1],因为存在负数,故指数位要-1,正整数部分存在0,故要-1。..."abc"); String s5 = c1 + "bc"; String s6 = c2 + "bc"; 在JVM里,考虑到垃圾回收(Garbage Collection)的方便,将heap(堆)划分为三部分...逻辑表达式s3 == s4为 false 因为String s3 = new String("abc")创建一个或两个对象,由于 new 关键字的存在,会在堆中创建一个 String 类型的 s3 对象

    78040

    【Java 】包装类详解:从基本概念到实战技巧

    = new Integer(100); int value = i1;//方法1 int value2 = i1.intValue();//方法2 经过上述步骤就可以将包装类转换成基本数据类型了,这两个例子分别展示了如何将...int类型转换成包装类,如何将包装类转换成int类型。...(i); //手动装箱 Integer y = i; // 自动装箱 3.2 拆箱 把包装类对象拆为基本数据类型 可以分为手动拆箱和自动拆箱 一般是因为需要运算,Java中的大多数运算符是为基本数据类型设计的...如果传入value数值不在范围内,那么每次被创建的对象(句柄)都指向一个新的且不同的地址,即通过new关键字由JVM分配的新地址。...,则为true因为包装类Integer 和 基本数据类型int 比较时,java会自动拆包装为int ,然后进行比较,实际上就变为两个int变量的比较。

    52010

    Netty系列(二):Netty拆包沾包问题的解决方案

    但如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP 就会将其拆分为多次发送,这就是拆包问题,也就是将一个大的包拆分为多个小包进行发送,接收端接收到多个包才能组成一个完整数据。...上述两种情况也是沾包和拆包问题。 上图出现的四种情况包括: 正常发送,两个包恰好满足TCP缓冲区的大小或达到TCP等待时长,分别发送两个包。 沾包:D1、D2都过小,两者进行了沾包处理。...解决方案 对于粘包和拆包问题,通常可以使用这四种解决方案: 使用固定数据长度进行发送,发送端将每个包都封装成固定的长度,比如100字节大小。如果不足100字节可通过补0等填充到指定长度再发送。...将消息分为头部和消息体,头部中保存整个消息的长度,这种情况下接收端只有在读取到足够长度的消息之后,才算是接收到一个完整的消息。 通过自定义协议进行粘包和拆包的处理。...这里再粘贴一下关键代码: 使用DelimiterBasedFrameDecoder处理拆包/沾包,并且每次查找的最大长度为1024字节。

    2.3K10

    【面试必备】Swift 面试题及其答案

    总结 Swift 相关面试题,分为初级、中级、高级三类,希望能帮助大家。 初级 问题1- 什么是 optional 类型,它是用来解决什么问题的?...它允许字符串和整数相比较,像这样: 应用程序不会崩溃,但是允许字符串和整数相比较可能不是预想的结果。 通过采用泛型,可以合并这两个函数为一个并同时保持类型安全。...2、解决强引用的循环问题——当两个实例对象相互引用,并且对引用的实例对象的值要求不能为 nil 时候。在这种情况下,引用的一方可以标记为 unowned,另一方使用隐式拆包。...问题5- 什么关键字可以实现递归枚举? ---- Swift 增加了一个新的关键字来实现递归枚举。...下面的例子是一个枚举类型,它在Node 条件下有两个相关联的值类型 T 和 List: enum List{ case Node(T, List) } 什么关键字可以实现递归枚举?

    8.1K30

    【关于Java的数据类型】

    1、八种基本的数据类型 Java支持数据类型分为两类: 基本数据类型和引用数据类型。...基本数据类型共有8种,可以分为三类: 数值型:整数类型(byte、short、int、long)和浮点类型(float、double) 字符型:char 布尔型:boolean 8种基本数据类型的默认值...注意一下几点: Java八种基本数据类型的字节数:1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double) 浮点数的默认类型为...BigDecimal对象num1和num2,分别表示0.1和0.2这两个十进制数。...自动装箱和拆箱:其次,Integer作为int的包装类,它可以实现自动装箱和拆箱。自动装箱是指将基本类型转化为相应的包装类类型,而自动拆箱则是将包装类类型转化为相应的基本类型。

    53610

    TCP三次握手和四次挥手?TCP如何保证可靠性?什么是TCP滑动窗口?

    计算方式:在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。 ?...当发生超时重传后,阀值会变成拥塞窗口的一半. TCP滑动窗口 需要说明一下,如果你不了解TCP的滑动窗口这个事,你等于不了解TCP协议。...TCP粘包/分包的原因: 应用程序写入的字节大小大于套接字发送缓冲区的大小,会发生拆包现象,而应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包现象; 进行MSS...大小的TCP分段,当TCP报文长度-TCP头部长度>MSS的时候将发生拆包 以太网帧的payload(净荷)大于MTU(1500字节)进行ip分片。...分为有头部的拆包与粘包、长度字段在前且有头部的拆包与粘包、多扩展头部的拆包与粘包。

    97031

    【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)

    ,所以报头最大为60字节,最小固定为20字节 3:8位服务类型(TOS) type pf service——实际只有4位有效,这4位彼此冲突,其中一位为1,剩下三位就都为0 最小延时:可以类比...(1)拆包 在网络层可以拆分为多个IP数据报,每个IP数据报来携带一部分载荷 如下图:如果载荷是一个特别大的TCP数据报,就把它拆分成两部分(这个过程都是IP系统内核自动完成的,程序员无法通过软件代码干预...) (2)组包 16位标识:哪些IP数据报的载荷应该一起组装 3位标志:只有2位有效,其中1位表示这次的IP数据报是否拆包了,还有1位表示结束标记(如果要基于UDP手动实现应用层的数据包拆包,...一般就是32/64这样的整数 一个IP数据报每经过一个路由器的转发,就-1。次数减到0,就丢包。...46是因为ARP是46字节;1500字节不到1.5kb(硬件限制:网口网线之类的,可以了解一下MTU) ③ARP:效果就是让路由器/交换机建立一个内部的结构(类似hash表)给一个IP地址能查到MAC

    50610

    Java包装类(Integer 详解 )

    System.out.println("----------------------"); // 源码993行 // 耗时 // -128~127 提前装箱完毕 // 此处127已经提前装箱,不需要重新创建对象,两个指向同一个对象...// 上面128不在范围内,需要创建对象 Integer it9 = 127; Integer it10 = 127; // 下面是自己手动new的两个对象,地址不同 Integer...---------------------- true false true false ---------------------- true true true false 该类由final关键字修饰...int类型(自动拆箱) - static Integer valueOf(int i) - 根据参数指定的整数来得到对象 - 用于实现将int类型包装成Integer类型(自动装箱) -...也就是把-128 ~ 127 之间的整数提前装箱完毕,若程序中需要该范围内的数据则直接从装箱池中获取,无需创建新对象

    67487

    JAVA面试50讲之4:int和Integer的区别

    ,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较) Integer i = new Integer(100...从小到大的创建尽可能多的整数并存储在一个名为 cache 的整数数组中。这个缓存会在 Integer 类第一次被使用的时候被初始化出来。...我们针对所有整数类型的类都有类似的缓存机制。...3.3 装箱和拆箱在编程实际中注意点 建议避免无意中的装箱、拆箱行为,尤其是在性能敏感的场合,创建 10 万个 Java 对象和 10 万个整数的开销可不是一个数量级的,不管是内存使用还是处理速度,光是对象头的空间占用就已经是数量级的差距了...6.关于其他知识延伸 6.1 对象的内存结构 对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。

    1.2K20

    Java 中基本数据类型有哪些?占多少字节?包装类型和基本类型的区别是什么?

    无论是新手入门还是面试备考,这两个知识点都是必须吃透的核心内容。本文将从「基本数据类型的分类与字节占用」「包装类型与基本类型的核心区别」「实际使用中的注意事项」三个维度,帮你彻底搞懂这些知识点。...基本数据类型(Primitive Type)是 Java 提供的最基础的数据类型,分为数值型(整数、浮点)、字符型、布尔型三大类,共 8 种,具体如下表所示:类型 关键字 占用字节取值范围...,默认整数类型长整型 long 8 $-2^{63}$ ~ $2^{63}-1$ 0L 需加 L/l 后缀(推荐 L)单精度浮点float 4...自动装箱与拆箱为了简化基本类型和包装类型的转换,Java 5 引入了自动装箱(Autoboxing) 和自动拆箱(Unboxing):自动装箱:基本类型 → 包装类型(如 int → Integer),...避免拆箱 NPE:包装类型拆箱前务必判空,否则会抛出 NPE(如 Integer num = null; int val = num; 直接报错)。

    25410

    c#面试题抽象类和接口的区别-金三银四面试:C#程序员经常遇到的30道基础面试题,想你所想

    25、JAVA的代码是半编译半解释的,C#代码是否也是这样的?   26、私有程序集与共享程序集有什么区别?   27、请解释进程与线程的区别?进程与程序的区别?   ...如果两个方法的声明仅在它们对ref的使用方面不同c#面试题抽象类和接口的区别,则将出现重载。但是,无法定义仅在ref和out方面不同的重载。   ...大多数编程语言提供内置的数据类型(比如整数和浮点数),这些数据类型会在作为参数传递时被复制(即,它们通过值来传递)。在.NET 中,这些称为值类型。...以下用于声明引用类型的关键字:   (1)class   (2)   (3)   8、结构体是值类型还是引用类型?   是值类型   9、装箱与拆箱是什么含义?   ...25、JAVA的代码是半编译半解释的,C#代码是否也是这样的?   C#源代码经过语言编译器执行第一次编译,变为中间语言,然后再由CLR编译成可执行代码。

    2.8K20

    重温Java八大基本数据类型

    String 是对象,不属于基本数据类型 8种基本数据按类型分可以分为 4个 整数型:byte、short、int、long 2个浮点型:float、double 1个字符类型:char 1个布尔型:boolean...a==b,a==c,只要和基本数据类型(即 int)比较,Integer就会调用value.intValue()拆箱成基本数据类型,你也可以理解为:当有基本数据类型,只比较值 b==c,这两个是永远不会相等的...不会经历拆箱过程,因为它们存放内存的位置不一样。 ②、两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。...④、int与Integer、new Integer()进行==比较时,结果永远为true,因为会把Integer自动拆箱为int,其实就是相当于两个int类型比较。...int 可以直接做运算,Integer 不能直接运算,拆箱转化为int才能进行运算。 4、默认值问题 Java中: 整数的默认类型是 int。

    1.3K10

    捕获了一只发生概率小于万分之一的Bug

    日志中有一半内容是正常的报文数据,而另一半内容是0x00这样的空数据。 虽然系统没抛出任何异常,但这些日志肯定是反常的。...查看代码,初步推断,可能是byte数组转String时,byte数组后半部分为空或存在一些无法转换的数据导致的。...前面我们已经推断,出现的可能性是字节数组有一部分为空导致或数据错误导致的。 上述代码有一个明显的错误,你是否能够看出来?...以整数形式返回实际读取的字节数。 read (byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。以整数形式返回实际读取的字节数。 分析一下上面的三个方法。...其中第一个方法,本质上来说后两个方法都是调用第一个方法来实现的,但第一个方法直接使用缺点很明显,就是处理效率低下,一个字节一个字节的读。而后两个方法都加入了byte数组,用来作为缓存区。

    29920

    面试必备!TCP协议经典十五连问!

    半连接队列和 SYN Flood 攻击的关系 TCP进入三次握手前,服务端会从CLOSED状态变为LISTEN状态,同时在内部创建了两个队列:半连接队列(SYN队列)和全连接队列(ACCEPT队列)。...当服务器回复SYN+ACK报文后,不会收到ACK回应报文,导致服务器上建立大量的半连接半连接队列满了,这就无法处理正常的TCP请求啦。...TCP的粘包和拆包 TCP是面向流,没有界限的一串数据。...TCP的粘包和拆包 为什么会产生粘包和拆包呢?...解决方案: 发送端将每个数据包封装为固定长度 在数据尾部增加特殊字符进行分割 将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小。

    1.9K32

    PTX(Parallel Thread Execution)常用的数据类型

    整数类型 整数类型分为无符号(unsigned)和有符号(signed)两种: 无符号整数: u8:8位无符号整数 u16:16位无符号整数 u32:32位无符号整数 u64:64位无符号整数 有符号整数...浮点数类型 浮点数类型包括半精度、单精度和双精度浮点数: 半精度浮点数: f16:16位浮点数 单精度浮点数: f32:32位浮点数 双精度浮点数: f64:64位浮点数 示例: .reg .f32 %...布尔类型 布尔类型用于表示真(true)或假(false),尽管PTX没有直接的布尔类型关键字,通常使用整数寄存器来表示布尔值(例如,0表示假,非0表示真)。...常见的向量类型包括: v2.u32:包含两个32位无符号整数的向量 v4.f32:包含四个32位单精度浮点数的向量 示例: .reg .v2.u32 %v1; // 声明一个包含两个32位无符号整数的向量寄存器...浮点数类型:包括半精度、单精度和双精度浮点数,适用于浮点数运算。 布尔类型:虽然PTX没有直接的布尔类型关键字,但可以使用整数寄存器来表示布尔值。

    38800

    Netty源码阅读入门实战(八) - 解码下

    构造器 传入一系列分隔符,通过解码器将二进制流分成完整数据包 ? decode 方法 ? 5.1 分析解码步骤 5.1.1 行处理器 行处理器决断 ? 定义位置 ?...initialBytesToStrip 为4,表获取一个完整数据包后,忽略前面4个字节,应用解码器拿到的就是不带长度域的数据包 6.3 基于偏移长度 ?...6.5 基于偏移可调整长度的截断 二进制协议带有两个header ?...,这里显然是13字节,长度域为16,因此减掉3才是真是的拆包所需要的长度,lengthAdjustment为-3 若你的协议基于长度,即可考虑不用字节来实现,而是直接拿来用,或者继承他,简单修改即可 7...累加字节流调用子类的decode方法进行解析将解析到的ByteBuf向下传播 8.2 基于长度解码器步骤 计算需要抽取的数据包长度跳过字节逻辑处理丟弃模式下的处理 8.3 两个问题 解码器抽象的解码过程

    84120

    春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    : " + d); // 输出:整数值: 10 转换规则如下 = 右边先自动转换成表达式中最高级的数据类型,再进行运算。...整型经过运算会自动转化最低 int 级别,如两个 char 类型的相加,得到的是一个 int 类型的数值。...[注意]: 很多同学都以为基本数据类型存在栈中,包装类型作为对象存储在堆中,这个观点是有失偏颇的,如果基础数据类型的成员变量在没有被static关键字修饰的情况下,是存在的堆中的,只有局部变量被存在栈的局部变量表中...拆箱:包装器类型转变为基本类型的过程。...这就解释了为什么第一个 == 号结果是true,而第二个为false,因为超出了缓存区间,每次都新建一个对象,而 == 号又是比较对象地址,对于两个不同的对象,地址肯定不一样啦。

    34200
    领券