Java语言基本数据类型、转换及其封装

Java语言基本数据类型、转换及其封装

1. 逻辑类型

·常量 true,false。

·变量的定义

使用关键字boolean来定义逻辑变量:

boolean x; boolean tom_12;

也可以一次定义几个:

boolean x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是变量的名字。定义时也可以赋给初值:

boolean x=true,tom=false,漂亮=true,jiafei

2.整数类型

·常量123,6000(十进制),077(八进制),0x3ABC(十六进制)。

·整型变量的定义分为4种:

1.int 型

使用关键字int来定义int型整形变量

int x

int tom_12

也可以定义几个:

int x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是名字。定义时也可以赋给初值:

int x=12,tom=-1230,漂亮=9898,jiafei

对于int型变量,分配给4个字节byte,一个字节由8位(bit)组成,4个字节占32位(bit)。bit 有两状态,分别用来表示0,1。这样计算机就可以使用2进制数来存储信息了。内存是一种特殊的电子元件,如果把内存条放大到摩天大楼那么大,那么它的基本单位——字节,就好比是大楼的房间,每个房间的结构都是完全相同的,一个字节由8个能显示两种状态的bit组成,就好比每个房间里有8个灯泡,每个灯泡有两种状态——亮灯灭灯。

对于

int x=7;

内存存储状态如下 :

00000000   00000000    00000000   00000111

最高位:左边的第一位,是符号位,用来区分正数或负数,正数使用原码表示,最高位是0,负数用补码表示,最高位是1。例如:

int x=-8;

内存的存储状态如下:

11111111    11111111    11111111    11111000

要得到-8的补码,首先得到7的原码,然后将7的原码中的0变成1,1变成0,就是-8的补码。

因此,int型变量的取值范围是-2^31~2^31-1。

2. byte型

使用关键字byte来定义byte型整型变量

byte x ; byte tom_12;

也可以一次定义几个:

byte x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是名字。定义时也可以赋给初值:

byte x=-12,tom=28,漂亮=98,jiafei

注:对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是:

-2^7~2^7-1。

3.short型

使用关键字short来定义short型整型变量:

short x; short tom_12;

也可以一次定义几个:

short x,tom,jafei,漂亮

x,tom,jafei,漂亮都是名字,定义时也可以赋给初值:

short x=12,tom=1234,漂亮=9876,jafei

注:对于short型变量,内存分配给2个字节,占16位,因此short型变量的取值范围是-2^15~2^15-1。

4.long 型

使用关键字long来定义long型整型变量

long x; long tom_12;

也可以一次定义几个

long x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是名字。定义时也可以赋给初值:

long x=12,tom=1234,漂亮=9876,jiafei

注:对于long型变量,内存分配给8个字节,占64位,因此long型变量的取值范围是 -2^63~2^63-1。

3.   字符类型

·常量 A b ? !9   好 \t   ,

Java使用unicode 字符集,所以常量共65535个。

·变量的定义

使用关键字char来定义字符变量

char x,char tom_12

也可以一次定义几个:

char x,tom,jafei,漂亮

x,tom,jafei,漂亮都是变量名字,定义时也可以赋给初值:

char x=A,tom=家,漂亮=假,jiafei

char 型变量,内存分配给2个字节,占16位,最高位不用来表示符号,没有负数的char.char型变量的取值范围是0~65535.

对于 char x='a';

那么内存x中存储的是97,97是字符a在unicode表中的排序位置,因此,允许将上面的语句写成

char x=97;

要观察一个字符在unicode表中的顺序位置,必须使用int型显示转换,如(int)'a',不可以使用short型转换,因为char的最高位不是符号位,如果要得到一个0~65535之间的数乴代表的unicode表中相应位置上的字符也必须使用char型显示转换。

在下面的例子中,分别用显示转换来显示一些字符在unicode表中的位置,以及某些位置上的字符。

例子:

public class Example2_1

{

       public static void main(String args[])

      {

               char chinaWord='你',japanWord=' ';

               int   p1=20328,p2=12358;

               System.out.println("汉字\'你\'在unicode表中的顺序位置:"+(int)chinaWord);

               System.out.println("日语\' \'字在unicode表中的顺序位置:"+(int)japanWord);

               System.out.println("unicode表中第20328位置上的字符是:"+(char)p1);

               System.out.println("unicode表中第12358位置上的字符是:"+(char)p2);

       }

}

4.      浮点类型   实型

浮点型分两种:

1. float 型

·常量 123.5439f,12389.987F,123.0f,2e40f    2乘10的40次方,科学计数法

·变量的定义

使用关键字float来定义float型变量:

float x;float tom_12;

也可以一次定义几个:

float x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是名字,定义时也可以赋给初值:

float x=12.76f,tom=1234.987f,漂亮=9876.0f,jiafei

注:对于float型变量,内存分配给4个字节,占32位,float型变量的取值范围大约是10^-38~10^38,-10^38~10^-38。

2.         double 型

·常量12389.5439d     ,d可以省略,12389908.987,123.0,6e-140 (6乘10的-140次方,科学计数法)

·变量的定义

使用关键字double来定义double型变量:

double x;double tom_12;

也可以一次定义几个:

double x,tom,jiafei,漂亮

x,tom,jiafei,漂亮都是名字,定义时也可以赋给初值:

double x=12.76,tom=1234098.987,漂亮=9876.098d,jiafei

注:double型变量,内存分配给8个字节,占64位,double型变量的取值范围大约是10^-308~10^308。

5.基本数据类型的转换

当我们把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据转换。基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。我们将这些类型按精度从“低”到“高”排列了顺序。

byte        short        int             long            float           double

当把在级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如:

float x=100;

如果输出x的值,结果将是100.0

例如:

int x=50;

float y;

y=x;

如果输出y的值,结果将是50.0。

当把在级别高的变量值赋给级别低的变量时,必须使用显示类型转换运算,

显示转换的格式:

类型名   要转换的值

例如:

int x=(int)23.89;

long y=(long)34.98F;

如果输出x,y的值将是23和34,强制转换运算可能导致精度的损失。

例子:

public class Example2_2

{

    public static void main(String args[])

    {

      byte a=120; short b=255;

      int c=2200;    long d=8000;

      float   f;

       double g=12346789.123456789;

     b=a;

     c=(int)d;

    f=(float)g;     //导致精度的损失。

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

      System.out.print("c="+c);System.out.println("d="+d);

     System.out.print("f="+f);System.out.println("g="+g);

     }

}

----------------------------------------------

java 基本数据类型之间的转换

一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。下面笔者就开发中的一些体会介绍给大家。
我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。

1 数据类型转换的种类
java数据类型的转换一般分三种,分别是:
(1). 简单数据类型之间的转换
(2). 字符串与其它数据类型的转换
(3). 其它实用数据类型转换
下面我们对这三种类型转换分别进行论述。
2 简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)--int--long--float--double

    简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
●包装类过渡类型能够转换

2.1自动类型转换
      低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
byte b;
int i=b;
long l=b;
float f=b;
double d=b;

      如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如r
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;
但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。

2.2强制类型转换
      将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
int i=99;byte b=(byte)i;char c=(char)i;float f=(float)i;
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。

2.3包装类过渡类型转换
      在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。
      在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。
      一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:
例1,当希望把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();

当希望把int型转换为double型时,自动转换:

    int i1=200;
    double d1=i1;

      简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3 字符串型与其它数据类型的转换
      通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:

int i1=10;
float f1=3.14f;
double d1=3.1415926;
Integer I1=new Integer(i1);
//生成Integer类r
Float F1=new Float(f1);
//生成Float类r
Double D1=new Double(d1);
//生成Double类r
//分别调用包装类的toString()方法转换为字符串
String si1=I1.toString();
String sf1=F1.toString();
String sd1=D1.toString();
Sysytem.out.println("si1" si1);
Sysytem.out.println("sf1" sf1);
Sysytem.out.println("sd1" sd1);

4、将字符型直接做为数值转换为其它数据类型
      将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用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型表示年、月、日、时、分、秒r
在长整型和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);


附加:

在java中除了这些转换之外基本数据类型还可以被隐式的转换成String,例如:

System.out.print(转换 100);//如果在数据前面有字符串用 连接//就会隐式的转换成

String


1.字符型转时间型:2005-10-1
reportdate_str = “2005-10-01”;
reportdate_str = reportdate_str + “ 00:00:00.0”
reportdate = java.sql.Timestamp.valueOf(reportdate_str);

2.时间型转字符型:
V_DATE = reportdate.toString();

3.将long型转化为String型
    long APP_UNIT = (long) userview.getDEPT_ID();
    String S_APP_UNIT = String.valeOf(APP_UNIT);
基本类型s都可以通过String.valeOf(s)来转化为String型。

----------------------------------------------

java基本数据类型与其封装类

2008年12月21日 星期日 10:04

java基本数据类型与其封装类

1   Boolean VS boolean
public final class Booleanextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Object.html]Object[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/io/Serializable.html]Serializable[/url], [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Boolean.html]Boolean[/url]>

Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。
此外,此类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。
2   Byte   VS byte
public final class Byteextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Byte.html]Byte[/url]>

Byte 类将基本类型 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。
此外,该类还为 byte 和 String 的相互转换提供了几种方法,并提供了处理 byte 时非常有用的其他一些常量和方法。

   3 Character   VS char
public final class Characterextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Object.html]Object[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/io/Serializable.html]Serializable[/url], [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Character.html]Character[/url]>

Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
4   Double   VS double
public final class Doubleextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Double.html]Double[/url]>

Double 类在对象中包装了一个基本类型 double 的值。每个 Double 类型的对象都包含一个 double 类型的字段。
此外,该类还提供了多个方法,可以将 double 转换为 String,将 String 转换为 double,还提供了其他一些处理 double 时有用的常量和方法。
5   Float   VS   float
public final class Floatextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Float.html]Float[/url]>

Float 类在对象中包装了一个 float 基本类型的值。Float 类型的对象包含一个 float 类型的字段。
此外,此类提供了几种方法,可在 float 类型和 String 类型之间互相转换,并且还提供了处理 float 类型时非常有用的其他一些常量和方法。
6 Integer   VS int
public final class Integerextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Integer.html]Integer[/url]>

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。
此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。
7 Long   VS long
public final class Longextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Long.html]Long[/url]>

Long 类在对象中封装了基本类型 long 的值。每个 Long 类型的对象都包含一个 long 类型的字段。
此外,该类提供了多个方法,可以将 long 转换为 String,将 String 转换为 long,除此之外,还提供了其他一些处理 long 时有用的常量和方法。
8   Short VS short
public final class Shortextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Number.html]Number[/url]implements [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Comparable.html]Comparable[/url]<[url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Short.html]Short[/url]>

Short 类在对象中包装基本类型 short 的值。一个 Short 类型的对象只包含一个 short 类型的字段。
另外,该类提供了多个方法,可以将 short 转换为 String,将 String 转换为 short,同时还提供了其他一些处理 short 时有用的常量和方法。
9
public final class Voidextends [url=file:///G:/html_zh_CN/html/zh_CN/api/java/lang/Object

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值