当前位置: 首页 > 面试题库 >

除了处理外,Short和Character有什么区别?

凤安然
2023-03-14
问题内容

据我所知:

  • “ bytewise”,看起来它们是相同的(它们都是2个字节长);
  • Character但是,它有更多处理(静态.isLetter()方法和其他方法等)。

尽管我的问题听起来有些愚蠢,但它们是:

  • 除非我的第一个假设是错误的,否则为什么会有原始类型char并且short由于它们具有相同的“内部长度”,而且在Java中没有未签名的原始类型?
  • Shortfinal(如果不是)可以Character扩展Short吗?

编辑 :答案给我错了:有 在Java中一个未签名的原始类型,这是… char

编辑2 :@PatriciaShanahan还提到在 算术
运算中,a的char行为类似于无符号的16位整数,就像a一样short。这包括左移,即符号位 随带,就像for一样short


问题答案:

本质的区别是带short符号的char是无符号的。

public class CharVsShort {
  public static void main(String[] args) throws Exception {
    short ffShort = (short)0xFFFF;
    char ffChar = (char)0xFFFF;

    System.out.println("all-1s-short = " + (int)ffShort);
    System.out.println("all-1s-char  = " + (int)ffChar);
  }
}

版画

all-1s-short = -1
all-1s-char  = 65535

在Java语言规范第4.2节规定,

积分类型是byteshortint,和long其值是8位,16位,32位和64位的 签名
二进制补码整数,分别和char,其值是16位 无符号 整数表示UTF-16码单位

(我的粗体)。它还将类型的范围明确指定为

  • byte,从-128到127(含)
  • short,从-32768到32767(含)
  • int,从-2147483648到2147483647(含)
  • long,从-9223372036854775808到9223372036854775807(含)
  • char,从’\ u0000’到’\ uffff’(包括0和65535)


 类似资料:
  • 问题内容: 我需要知道在Java中char和Character之间有什么区别,因为当我制作一个Java程序时,char起作用了,而Character没有起作用。 问题答案: char是表示单个16位Unicode字符的原始类型,而Character是包装器类,它允许我们以OOP类型使用char原始概念。 字符示例 角色示例 它将“ a”转换为“ A”

  • 问题内容: 我的工作应该使用并行技术,并且我是python的新用户。因此,我想知道您是否可以共享有关python和模块的一些资料。两者有什么区别? 问题答案: 该模块使您可以运行和控制其他程序。您可以使用计算机上的命令行启动的任何内容,都可以使用此模块运行和控制。使用它可以将外部程序集成到您的Python代码中。 该模块可让您将以python编写的任务划分为多个进程,以帮助提高性能。它提供与该模块

  • 我是Rust的新手。我认为用于将标识符导入当前范围,用于声明外部模块。但是这种理解(可能是错误的)对我来说没有任何意义。有人能解释一下为什么Rust有这两个概念以及适合使用它们的情况吗?

  • 我的工作应该使用并行技术,我是python的新用户。因此,我想知道您是否可以分享一些关于python和模块的资料。这两者有什么区别?

  • 问题内容: 我正在学习如何在Python中使用和模块来并行运行某些操作并加速我的代码。 我发现很难理解一个对象与一个对象之间的区别是什么(也许是因为我没有任何理论背景)。 另外,对我来说,如何实例化一个作业队列并使其只有4个(例如)并行运行,而另一个则等待资源释放后再执行,对我来说也不是很清楚。 我发现文档中的示例很清楚,但并不十分详尽。一旦我尝试使事情复杂化,我就会收到很多奇怪的错误(例如无法腌

  • 我最近开始使用ECMAScript2016的箭头函数,而不是原来的语法来定义函数。如果我每次想要定义函数时都使用这个语法是否可以,或者是否有任何缺点,比如速度等等?