精华内容
下载资源
问答
  • 关于数据类型的字节长度问题,根据编程语言以及编程系统环境等是有差异的,今天自己32位win7系统下测试了下java的基本数据字节长度测试代码:System.out.println("byte 的2进制码位数:"+Byte.SIZE);System.out....

    关于数据类型的字节长度问题,根据编程语言以及编程系统环境等是有差异的,今天自己在32位win7系统下测试了下java的基本数据字节长度

    测试代码:

    System.out.println("byte 的2进制码位数:"+Byte.SIZE);

    System.out.println("char 的2进制码位数:"+Character.SIZE);

    System.out.println("int 的2进制码位数:"+Integer.SIZE);

    System.out.println("short 的2进制码位数:"+Short.SIZE);

    System.out.println("long 的2进制码位数:"+Long.SIZE);

    System.out.println("float 的2进制码位数:"+Float.SIZE);

    System.out.println("double 的2进制码位数:"+Double.SIZE);

    String s1="123";

    byte[] buffer=s1.getBytes();

    System.out.println(buffer.length);

    String s2="abc";

    buffer=s2.getBytes();

    System.out.println(buffer.length);

    String s3="哈哈哈";

    buffer=s3.getBytes();

    System.out.println(buffer.length);

    测试结果:

    byte 的2进制码位数:8

    char 的2进制码位数:16

    int 的2进制码位数:32

    short 的2进制码位数:16

    long 的2进制码位数:64

    float 的2进制码位数:32

    double 的2进制码位数:64

    3

    3

    6

    应为一个字节码的长度为8,所以很容易分析出32位系统中:java的byte一个字节,char、short 两个字节,int、float四个字节,long、double为八个字节,String类型的长度是根据组成字符串的内容计算的,内容中一个数字或字母为一字节,汉字两个字节。至于boolean因为它只有1、0两个状态,所以只要1/4个字节码就够表示了,但是实际在内存中应该是占用一个字节的。

    展开全文
  • 出自:https://blog.csdn.net/ibelieve618/article/details/549487291、JAVA中char占2字节,16位。可存放汉字2、char赋值char a='a'; //任意单个字符,加单引号。char a='';//任意单个文字,加单引号。char ...

    出自:https://blog.csdn.net/ibelieve618/article/details/549487291、JAVA中,char占2字节,16位。可在存放汉字

    2、char赋值

    char a='a';  //任意单个字符,加单引号。

    char a='中';//任意单个中文字,加单引号。

    char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。

    注:只能放单个字符。

    3、char运算

    char类型是可以运算的因为char在ASCII等字符编码表中,有对应的数值。

    在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。

    示例:

    char m='a';  ——a。

    char m='a'+'b';  ——Ã。  //char类型相加,提升为int类型,输出对应的字符。注,在CMD.exe用输出结果是问题?,不同的编码输出显示不一样。Eclipse中须改成UTF-8。

    int m='a'+'b';   ——195。//195没有超出int范围,直接输出195。

    char m='a'+b;  ——报错。//因为b是一个赋值的变量。

    char m=197;  ——Ã。 //输出字符编码表中对应的字符。

    char m='197;  ——报错。//因为有单引号,表示是字符,只允许放单个字符。

    char m='a'+1;  ——b。//提升为int,计算结果98对应的字符是b。

    char m='中'+'国';  ——42282。

    char m='中'+'国'+'国'+'国';  ——报错。int转char有损失。因为结果已经超出char类型的范围。

    int m='中'+'国'+'国'+'国';  ——86820

    char m='中'+1;  ——丮。//1是int,结果提升为int,输出对应的字符。

    char m='中'+"国";  ——报错。String无法转换为char。

    System.out.println('中'+"国");  ——中国。//没有变量附值的过程。String与任何字符用“+”相连,转换为String。个人总结:

    3a3e5659159f

    展开全文
  • java基本数据类型总结Java数据类型总结数据类型计算机语言里面,是对内存位置一个抽象表达方式,可以理解为针对内存一种抽象表达方式。接触每种语言时候,都会存在数据类型认识,有复杂、简单,各种...

    java基本数据类型总结

    Java数据类型总结

    数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。

    一、基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

    1).Java中的基本数据类型有八种,即八大基本类型。具体如下:

    类型    称呼  值域  表示范围

    byte 字节型8 bits -128~127

    int 整型32 bits -2^31~(2^31-1)

    short 短整型16 bits -2^15~(2^15-1)

    long 长整型64 bits -2^63~(2^63-1)

    char 字符型16 bits(Unicode) 0~65535

    float 浮点型32 bits 直接赋值时必须在数字后加上f或F

    double 双精度64 bits 赋值时可以加d或D也可以不加

    boolean 布尔型true/false只有“真”或“假”两种结果

    2)补充:char(字符型)中的一个字母或一个汉字对应一个整数,在ASCII中它的范围为0~255。

    3)其他:a.定义一个byte变量,如:byte b = -256;

    由于-256超出了字节型的范围,所以要使程序不报错,可有如下几种解决方法:

    1.更改变量的数据类型(如:将byte改为int);

    2.更改赋给变量的数值,使其包括在变量的数据类型的值域内;

    3.进行强制转换: 如:byte b=(byte)-256;

    进行强制转换后,虽然程序不再报错,但是有可能会使原值的精度受到影响,即出现“溢出”现象。

    b.自动转换:小范围的整数类型值可通过赋值运算直接转换为大范围的原始类型值。从byte->short->char->int->long->float->double可以进行自动转换;反之,则进行强制转换。(如:假设i为int型,b为byte型,可有:int i=b;假设f为float型,要把它赋值给long型的变量,可有:long l = (long)f)

    c.定义一个浮点型数时,记得要在数值后面加上“f”或“F”。(如:float f = 10000.0f;)

    d.若定义char c=’a’;定义int n=c;则输出的n值为“a”的ASCII值,即97。

    二、对象类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

    1).对象类型(引用类型)包括:

    类、接口类型、数组类型、枚举类型(Java 枚举(enum) 详解7种常见的用法网址 https://blog.csdn.net/qq_27093465/article/details/52180865)、注解类型。

    区别:

    基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

    引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

    例如,有一个类Person,有属性name,age,带有参的构造方法,

    Person p = new Person("zhangsan",20);

    在内存中的具体创建过程是:

    1.首先在栈内存中位其p分配一块空间;

    2.在堆内存中为Person对象分配一块空间,并为其三个属性设初值"",0;

    3.根据类Person中对属性的定义,为该对象的两个属性进行赋值操作;

    4.调用构造方法,为两个属性赋值为"Tom",20;(注意这个时候p与Person对象之间还没有建立联系);

    5.将Person对象在堆内存中的地址,赋值给栈中的p;通过引用(句柄)p可以找到堆中对象的具体信息。

    三:java数据类型在内存中的存储:

    1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

    2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

    区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念),

    基本类型和引用类型的内存模型本质上是不一样的。

    例1:我们分析一下”==“和equals()的区别。

    首先,我定以两个String对象

    Stringa="abc";

    Stringb="abc";

    然后

    if(a==b){

    System.out.println("a==b");

    }else{

    System.out.println("a!=b");}

    程序输出a!=b

    原因:a和b的地址是不相同的,a==b比较的是两个变量的地址

    例2:定义两个基本类型

    int a=4;

    int b=4;

    if(a==b){System.out.println("a==b");}

    else

    {System.out.println("a!=b");}

    输出:a==b

    原因:==比较的是两个变量的内容

    猜想:不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。

    类型转换

    1.简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

    自动转换

    具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时 (若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小。

    接!

    ①下面的语句可以在Java中直接通过:

    byte b;int i=b; long l=b; float f=b; double d=b;

    ②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如

    char c='c'; int i=c;

    System.out.println("output:"+i);输出:output:99;

    ③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

    short i=99 ; char c=(char)i; System.out.println("output:"+c);输出:output:c;

    强制转换

    将"大"数据转换为"小"数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。

    2)表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。

    ①所有的byte,short,char型的值将被提升为int型;

    ②如果有一个操作数是long型,计算结果是long型;

    ③如果有一个操作数是float型,计算结果是float型;

    ④如果有一个操作数是double型,计算结果是double型;

    例, byte b; b=3; b=(byte)(b*3);//必须声明byte。

    3)包装类过渡类型转换

    一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

    ①当希望把float型转换为double型时:

    float f1=100.00f;

    Float F1=new Float(f1);

    double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

    ②当希望把double型转换为int型时:

    double d1=100.00;

    Double D1=new Double(d1);

    int i1=D1.intValue();

    简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

    而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

    4)字符串与其它类型间的转换

    其它类型向字符串的转换

    ①调用类的串转换方法:X.toString();

    ②自动转换:X+"";

    ③使用String的方法:String.volueOf(X);

    字符串作为值,向其它类型的转换

    ①先转换成相应的封装器实例,再调用对应的方法转换成其它类型

    例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

    ②静态parseXXX方法

    String s = "1";

    byte b = Byte.parseByte( s );

    short t = Short.parseShort( s );

    int i = Integer.parseInt( s );

    long l = Long.parseLong( s );

    Float f = Float.parseFloat( s );

    Double d = Double.parseDouble( s );

    ③Character的getNumericValue(char ch)方法

    5)Date类与其它数据类型的相互转换

    整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:

    ①Date(int year, int month, int date):以int型表示年、月、日

    ②Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分

    ③Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒

    在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)。

    获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。

    而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。

    有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,

    import java.text.SimpleDateFormat;

    import java.util.*;

    java.util.Date date = new java.util.Date();

    //如果希望得到YYYYMMDD的格式

    SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");

    String dateFormat=sy1.format(date);

    //如果希望分开得到年,月,日

    SimpleDateFormat sy=new SimpleDateFormat("yyyy");

    SimpleDateFormat sm=new SimpleDateFormat("MM");

    SimpleDateFormat sd=new SimpleDateFormat("dd");

    String syear=sy.format(date);

    String smon=sm.format(date);

    String sday=sd.format(date);

    总结:只有boolean不参与数据类型的转换

    (1).自动类型的转换:a.常数在表数范围内是能够自动类型转换的

    b.数据范围小的能够自动数据类型大的转换(注意特例)

    int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度

    c.引用类型能够自动转换为父类的

    d.基本类型和它们包装类型是能够互相转换的

    (2).强制类型转换:用圆括号括起来目标类型,置于变量前

    final关键字的用法

    、final修饰类中的属性或者变量

    无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变,我们可以只设置一次final变量的值。

    2、final修饰类中的方法

    作用:可以被继承,但继承后不能被重写。

    3、final修饰类

    作用:类不可以被继承。

    展开全文
  • 在程序设计经常用到一系列的数据类型在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型。如下表:基本类型包装器类型...

    在程序设计中经常用到一系列的数据类型,在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型。如下表:

    基本类型

    包装器类型

    boolean

    Boolean

    char

    Character

    int

    Integer

    byte

    Byte

    short

    Short

    long

    Long

    float

    Float

    double

    Double

    为什么存在这两种类型呢?

    我们都知道在Java语言中,new一个对象存储在堆里,我们通过堆栈中的引用来使用这些对象;但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量。

    所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在堆栈中,因此更加高效。

    有了基本类型之后为什么还要有包装器类型呢?我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

    另外当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。

    二者可以相互转换:

    1 Character ch = new Character('x');

    2 char c = ch;

    3 char c = 'c';

    4 Character ch = new Character(c);

    二者之间也存在一些区别:

    1.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

    2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

    3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null

    4.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。

    展开全文
  • 一、概述java中的基本数据类型有八种,分别是char、byte、short、int、long、float、double,boolean。其中这八种基本类型都有其对应的包装类,分别是Character、Byte、Short、Integer、Long、Float、Double、...
  • java四类八种基本数据类型第一类:整型 byte short int long第二类:浮点型 float double第三类:逻辑型 boolean(它只有两个值可取true false)第四类:字符型 char在可以直接分配内存数据是基本数据类型。...
  • 它们提供了对Java基本数据类型的操作,但是这些方法事实上是两个重要的接口定义的DataInput和DataOutput,它们的功能就是把二进制的字节流转换成Java的基本数据类型,同时还提供了从数据使用UTF-8编码构建...
  • Java 领域里分为基本数据类型和引用数据类型。(这里主要说基本数据类型基本数据类型变量: 存是数据值本身,引用数据类型变量: 存是保存数据内存空间地址。一.基本数据类型:1.整型数据byte ...
  • JAVA的基本数据类型

    2021-03-18 19:43:38
    了解了JAVA的运行原理后,接下来我们就需要了解JAVA的基本数据类型了。 一.基本数据类型 基本数据类型就是JAVA最常用到的数据类型,和c语言的基本数据类型比较相似:比如byte、short、int、long、double、...
  • java中基本数据类型和引用数据类型区别基本数据类型引用数据类型区别: 基本数据类型 byte short int long float double boolean char 引用数据类型 类 数组 接口 枚举 注解 区别: 基本数据类型在被创建时,...
  • Java基本数据类型 Java中,经常可以遇到类型转换场景,从变量定义到复制、数值变量计算到方法参数传递、基类与...基本数据类型共有8种,分别是:布尔型boolean, 字符型char和数值型byte/short/int/long/float
  • 众所周知Java是一种强类型语言,在Java语言Java的数据类型一共分为两大类,分别为基本数据类型和引用数据类型,其中基本数据类型细分小类可分为整数类型、浮点类型、字符类型、布尔类型这四小类。 二、基本数据...
  • java的基本数据类型

    2020-11-25 20:25:43
    在java中基本数据类型有八种 整型有 byte short int long 浮点型有 float double 布尔型 boolean 字符型有 char (String 字符串不属于java的基本数据类型) 整型 占用内存空间 数据范围 byte 1个字节 -128~...
  • java四类八种基本数据类型第一类:整型 byte short int long第二类:浮点型 float double第三类:逻辑型 boolean(它只有两个值可取true false)第四类:字符型 char在可以直接分配内存数据是基本数据类型。...
  • 低 -------------------------... double 自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型自动类型转换也叫“向上类型转换”,它是低级转为高级,例如 char a='a'; int a1=a; 这时就是向上类型转...
  •  String不是java中的基本数据类型java中有8个基本数据类型,它们都对应有封装类(包装类),其中基本数据类型char的包装类有些特殊,是Character类。  Java是一种强类型语言,这就意味着必须为...
  • java中基本数据类型

    2021-04-04 22:11:25
    java中有八种基本数据类型,分别为boolean,byte,short,char,int,long,float,double。除了这8种基本数据类型,其他都是引用类型。 另外计算机内存,1字节=8位。 1.逻辑类型:boolean 可以将变量定义为true,...
  • Java的基本数据类型

    2020-09-05 22:34:05
    在Java中一共有8中基本数据类型 整数类型(byte、short、int、long)的基本类型变量的默认值为0。 单精度浮点型(float)的基本类型变量的默认值为0.0f。 双精度浮点型(double)的基本类型变量的默认值为0.0...
  • 基本类型(原始数据类型) byte short int long float double char boolean基本类型变量持有原始值。2. 符合数据类型(引用类型),引用类型持有引用值(即对某个对象引用,而非对象本身)。一般Java在内存分配时会...
  • 分类基本数据类型数值型整数类型(byte,short,int,long)浮点类型(float,double)字符型(char)布尔型(boolean)引用数据类型类(class)接口(interface)数组([])Java基本数据类型图switch 是否能作用 byte 上,是否能...
  • 一、基本数据类型byte、short、int、long(整数类型)float、double(浮点数类型)char(字符型)boolean(布尔类型 )Java数据大多数存放堆栈。栈区:存放局部变量,对象声明引用等。堆区:存放new关键字创建类...
  • 一、基本数据类型byte、short、int、long(整数类型)float、double(浮点数类型)char(字符型)boolean(布尔类型 )Java数据大多数存放堆栈。栈区:存放局部变量,对象声明引用等。堆区:存放new关键字创建类...
  • 一、基本数据类型byte、short、int、long(整数类型)float、double(浮点数类型)char(字符型)boolean(布尔类型 )Java数据大多数存放堆栈。栈区:存放局部变量,对象声明引用等。堆区:存放new关键字创建类...
  • 一种基本数据类型:byte、short、char、int、long、float、double和boolean 另外一种是包装数据类型:Bety 、Short、 Character、 Integer 、Long、 Float、Double和Boolean 当然基本数据类型和包装数据...
  • 基本类型可以分为三类,字符类型 char,布尔类型 boolean 以及...JAVA中的数值类型不粗无符号,他们取值范围时固定,不会随着机器硬件环境或者操作系统改变而改变。数据类型.png取值范围和数据长度:基...
  • Java中的基本数据类型

    2014-06-22 23:05:11
    Java中的基本数据类型 Java中的数据类型可以分为两种: 基本数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 可以说,除了基本类型以外的所有类型都是引用数据类型 ...
  • 类型 32位系统占用空间 64位系统占用空间 boolean 1 byte 1 byte byte 1 byte 1 byte char 2 byte 2 byte short 2 byte 2 byte int 4 byte 4 byte floa...
  • 在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean整型 其中byte、short、int、long都是表示整数,只不过他们取值范围不一样byte取值范围为-128~127,占用1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,817
精华内容 1,526
关键字:

char在java的基本数据类型中

java 订阅