文档库 最新最全的文档下载
当前位置:文档库 › java存取oracle中的COLB类型数据

java存取oracle中的COLB类型数据

java存取oracle中的COLB类型数据
java存取oracle中的COLB类型数据

一、如何去处理Clob、BLOB的大类型

CLOB可用于存放大文本数据,最多可存储4GB数据,在应用开发中比较常见.java提供的sql.Clob类与之对应.它提供两个方法来读取Clob的数据:

getCharacterStream() 方法返回按unicode编码的输入流(java.io.Reader对象) getAsciiStream() 方法返回按ASCII编码的输入流(java.io.InputStream对象) 所以如果你的数据库中有可能存储中文字符的话,就要使用前一个方法.

现在举一个实际的例子,让我一步步学习如何使用CLOB.

首先,创建一个含CLOB字段的表:

create table test (id INTEGER, content clob);

接下来, 我们通过JSP往这张表里插入一条记录,然后再获取显示它.

插入操作:

以上需要注意的几点是:

1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用empty_blob()函数分配locator).然后把它select出来(此时它当然没有数据,但结果集不是空的),得到一个Clob的对象,修改该对象的内容让它满足我们的需要,再通过update方法更新该行记录.

2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.

3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了. 这就是上面那段代码里//*两行的作用.

下面,我们将刚插入的记录从数据库中读取出来并显示之:

二、编码问题

因为JAVA的开发者是老外,所以他们对中文的支持并不是太好,这一点让不少的我们感到很是头痛,也就是我们通过说的汉字编码问题吧,关于一些汉字编码的规范我就不多说了,我主要是谈谈在和oracle数据库连接时的一些小问题,不过这些小问题很是让人头痛的。

1、在插入到数据库中的中文问题要转换成编码

2、从数据库中读到中文又要转换成编码

让我们看一个编码的JAVA代码:

//ECov.java

import java.io.UnsupportedEncodingException;

public class ECov

{

public static String asc2gb(String asc){

String ret;

if(asc==null)return asc;

try{

ret=new String(asc.getBytes("ISO8859_1"),"GB2312");

}

catch(UnsupportedEncodingException e){

ret=asc;

}

return ret;

}

public static String gb2asc(String gb){

String ret;

if(gb==null)return gb;

try{

ret=new String(gb.getBytes("GB2312"),"ISO8859_1");

}

catch(UnsupportedEncodingException e){

ret=gb;

}

return ret;

}

public static int byte2int(byte b){

return ((-1)>>>24)&b;

}

}

其实这段代码的意思也就是把两种方法合而为一了。

在进行数据库插入时要用ECov.gb2asc(arg),要在读时要用ECov.asc2gb(arg)。其中最关键的一点就是Oracle好像只认识ISO8859_1这种格式的编码吧(仅是我的想法)。

三、一些小细节

1、就是setAutoCommit(true or false),就是我们在sqlPlus中常用commit()的功能,如果是用true,就不要用commit(),否则还是用commit()方法的。

2、对日期类型的处理,其实他并不是想象中setDate(),getDate()那么简单的,中间有很大的漏洞。大家自己多调试就会觉得有很多的乐趣的。

3、在和数据库中最好是采用连接池技术,用标准的J2EE的环境,用简单的JNDI技术,是很好的一种方法的。

共2页。首页上一页12

*操作oracle数据库的CLOB字段,包括读和写

*作者:令少爷

* */

package https://www.wendangku.net/doc/a72930939.html,mon.sql.lob;

import java.sql.*;

import java.io.*;

import oracle.jdbc.OracleResultSet;

import oracle.sql.*;

public class JClob {

String tableName = null; //表名

String primaryKey = null; //表的主键名

String primaryValue = null; //表的主键值

String fieldName = null; //表的CLOB字段名

String clobValue = null; //表的CLOB字段值

Connection conn = null; //与oracle的连接

/**

*

*用于测试用

*

* */

public static void main(String[] args) {

try {

JClob jc = new JClob(getConnection(),"aa","a","aaaa","c","ccc"); jc.write();

jc.read();

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

}

/**

*

*构造方法

*

* */

public JClob(Connection connection,String tableName,String primaryKey,String primaryValue,String fieldName,String clobValue) { this.conn = connection;

this.tableName = tableName;

this.primaryKey = primaryKey;

this.primaryValue = primaryValue;

this.fieldName = fieldName;

this.clobValue = clobValue;

}

/**

*

*构造方法,但不必传clobValue值

*一般构造出的实例用来读Clob字段

*

* */

public JClob(Connection connection,String tableName,String primaryKey,String primaryValue,String fieldName) {

this.conn = connection;

this.tableName = tableName;

this.primaryKey = primaryKey;

this.primaryValue = primaryValue;

this.fieldName = fieldName;

}

/**

*

*用于测试

*

* */

public static Connection getConnection() throws

SQLException,ClassNotFoundException {

Class.forName("oracle.jdbc.OracleDriver");

Connection conn =

DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.18:1521:port al","portal","portal");

return conn;

}

*

*读数据库中clob字段的内容

*@return clob字段值

*

* */

public String read() throws SQLException,IOException {

String rtn = null;

try {

String sql = "select " + fieldName + " from " + tableName + " where " + primaryKey + "=" + primaryValue;

//Connection conn = getConnection();

PreparedStatement pstmt = conn.prepareStatement(sql);

//int v = Integer.parseInt(primaryValue);

//pstmt.setInt(1,v);

ResultSet rs = pstmt.executeQuery();

java.sql.Clob clob = null;

if (rs.next()) {

clob = rs.getCLOB(fieldName);

//clob = ((OracleResultSet)rs).getCLOB(fieldName);

//clob =

((https://www.wendangku.net/doc/a72930939.html,mons.dbcp.DelegatingResultSet)rs).getClob(fieldName); //Reader in = clob.getCharacterStream();

InputStream input = clob.getAsciiStream();

int len = (int)clob.length();

byte[] by = new byte[len];

int i ;//= input.read(by,0,len);

while(-1 != (i = input.read(by, 0, by.length))) {

input.read(by, 0, i);

}

rtn = new String(by);

}

}

catch (SQLException e){

throw e;

}

catch (Exception ee) {

ee.printStackTrace();

}

return rtn;

}

*

*葱数据库中clob字段的内容

*

* */

public void write() throws SQLException,IOException {

String sql = "update " + tableName + " set " + fieldName + "=empty_clob() where " + primaryKey + "=" + primaryValue;

//Connection conn = getConnection();

conn.setAutoCommit(false);

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.executeUpdate();

sql = "select " + fieldName + " from " + tableName + " where " + primaryKey + "=" + primaryValue;

Statement st = conn.createStatement();

ResultSet rs = st.executeQuery(sql);

java.sql.Clob clob ;

if (rs.next()) {

clob = ((oracle.jdbc.OracleResultSet)rs).getClob(fieldName);

//clob=((https://www.wendangku.net/doc/a72930939.html,mons.dbcp.DelegatingResultSet)rs).getClob(fiel dName);

oracle.sql.CLOB my_clob = (oracle.sql.CLOB)clob;

OutputStream writer = my_clob.getAsciiOutputStream();

byte[] contentStr = this.getContent().getBytes();

writer.write(contentStr);

writer.flush();

writer.close();

}

https://www.wendangku.net/doc/a72930939.html,mit();

rs.close();

st.close();

pstmt.close();

conn.setAutoCommit(true);

}

/**

*

*

* */

private String getContent() {

return this.clobValue;

}

/**

*

*

* */

public void setClobValue(String clobValue) {

this.clobValue = clobValue;

}

}

字段类型:blob,clob,nclob

说明:三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。

我们所操作的clobtest_table中属性是(字符型id,CLOB型picstr),目前我们假设一个大的字符对象str已经包含了我们需要存入picstr字段的数据。而且connection对象conn已经建立。以下的例子程序也因为不想占用太多的空间,所以对抛出异常没有写。大家参考一下api doc。就可以知道该抛出什么异常了,此处仅仅告诉大家如何去写。

代码:

(1)对数据库clob型执行插入操作

*************************************************

java.sql.PreparedStatement pstmt = null;

ResultSet rs = null;

String query = "";

conn.setAutoCommit(false); www@bitscn@com

query = "insert into clobtest_table(id,picstr)

values(?,empty_clob())";

java.sql.PreparedStatement pstmt =

conn.prepareStatement(query);

pstmt.setString(1,"001");

pstmt.executeUpdate();

pstmt = null

query = "select picstr from clobtest_table where id = '001' for update";

pstmt = con.prepareStatement(query)

rs= pstmt.executeQuery();

oracle.sql.CLOB clobtt = null;

if(rs.next()){

clobtt = (oracle.sql.CLOB)rs.getClob(1);

}

Writer wr = clobtt.getCharacterOutputStream();

wr.write(strtmp);

wr.flush();

wr.close();

rs.close();

https://www.wendangku.net/doc/a72930939.html,mit();

(2)通过sql/plus查询是否已经成功插入数据库

*************************************************

PL/SQL的包DBMS_LOB来处理LOB数据。察看刚才的插入是否成功。使用DBMS_LOB包的getlength这个procedure来检测是否已经将str

存入到picstr字段中了。如: https://www.wendangku.net/doc/a72930939.html,*中国网管博客

SQL> select dbms_lob.getlength(picstr) from clobtest_table;

(3)对数据库clob型执行读取操作

*************************************************

读取相对插入就很简单了。基本步骤和一半的取数据库数据没有太

大的差别。

String description = ""

query = "select picstr from clobtest_table where id = '001'";

pstmt = con.prepareStatement(query);

ResultSet result = pstmt.executeQuery();

if(result.next()){

oracle.jdbc.driver.OracleResultSet ors =

(oracle.jdbc.driver.OracleResultSet)result;

oracle.sql.CLOB clobtmp = (oracle.sql.CLOB) ors.getClob(1);

if(clobtmp==null || clobtmp.length()==0){

System.out.println("======CLOB对象为空 ");

description = "";

}else{

description=clobtmp.getSubString((long)1,(int)clobtmp.length( )); https://www.wendangku.net/doc/a72930939.html,网管论坛

System.out.println("======字符串形式 "+description);

}

}

[/size]程序示例:

Java代码

1.public void getTpxw() {

2. Session session = HibernateUtil.currentSession();

3. Transaction tx = session.beginTransaction();

4. Query q = session

5. .createQuery("select infos.guId, infos.subject,

infos.content from Infos as infos,Category as category "

6. + "where (category.categoryName='视频介

绍') and (infos.categoryId=category.guId) "

7. + "order by infos.startDate desc ");

8. q.setFirstResult(0);

9. q.setMaxResults(1);

10. Iterator list = q.list().iterator();

11. Infos infosCustom = null;

12. if (list.hasNext()) {

13. Object[] it = (Object[]) list.next();

14. infosCustom = new Infos();

15. infosCustom.setGuId((String) it[0]);

16. String sub = (String) it[1];

17. // String content = (String) it[2];

18. infosCustom.setSubject(sub);

19.

20. try {

21. SerializableClob bookCol = (SerializableClob) i

t[2];

22. Clob jbookColClob = bookCol.getWrappedClob();

23. CLOB oClob = (CLOB) jbookColClob;

24. Reader in = oClob.characterStreamValue();

25. char b[] = new char[8192];

26. StringBuffer str = new StringBuffer();

27. long totalSize = 0;

28. long fileLength = jbookColClob.length();

29. int ii = 0;

30. if (fileLength < 8192) {

31. ii = in.read(b, 0, (int) fileLength);

32.

33. str.append(b);

34. } else

35. while (totalSize < fileLength) {

36. ii = in.read(b, 0, 8192);

37. totalSize += ii;

38. str.append(b);

39. }

40. in.close();

41. infosCustom.setBookColS(str.toString());

42. String content = str.toString();

43. if (content != null) {

44. if (content.length() <= Integer

45. .parseInt(getContentLength()))

46. infosCustom.setBookColS(content);

47. else

48. infosCustom.setBookColS(content.substri

ng(0, Integer

49. .parseInt(getContentLength()))

50. + "......");

51. }

52. } catch (Exception e) {

53. e.printStackTrace();

54. }

55. } else {

56. infosCustom = new Infos();

57. infosCustom.setBookColS("没有相关内容");

58. }

59. setCurrentTpxw(infosCustom);

60. https://www.wendangku.net/doc/a72930939.html,mit();

61. HibernateUtil.closeSession();

62. }

相关文章:

?Clob的解决方法

?我也来谈谈Blob、Clob类型字段的读取、保存更新

?使用JDBC和Hibernate来写入Blob型数据到Oracle中

推荐圈子: liferay

更多相关推荐

Blob是指二进制大对象也就是英文Binary Large Object的所写,而Clob 是指大字符对象也就是英文Character Large Object的所写。由此可见这辆个类型都是用来存储大量数据而设计的,其中BLOB是用来存储大量二进制数据的;CLOB用来存储大量文本数据。

那么有人肯定要问既然已经有VARCHAR和VARBINARY两中类型,为什么还要再使用另外的两种类型呢?其实问题很简单,VARCHAR和VARBINARY两种类型是有自己的局限性的。首先说这两种类型的长度还是有限的不可以超过一定的限额,以VARCHAR再ORA中为例长度不可以超过4000;那么有人又要问了,LONGVARCHAR 类型作为数据库中的一种存储字符的类型可以满足要求,存储很长的字符,那为什么非要出现CLOB类型呢?其实如果你用过LONGVARCHAR类型就不难发现,该类型的一个重要缺陷就是不可以使用LIKE这样的条件检索。(稍候将介绍在CLOB 中如何实现类似LIKE的模糊查找)另外除了上述的问题外,还又一个问题,就是在数据库中VARCHAR和VARBINARY的存取是将全部内容从全部读取或写入,对于100K或者说更大数据来说这样的读写方式,远不如用流进行读写来得更现实一些。

在JDBC中有两个接口对应数据库中的BLOB和CLOB类型,java.sql.Blob和java.sql.Clob。和你平常使用数据库一样你可以直接通过ResultSet.getBlob()方法来获取该接口的对象。与平时的查找唯一不同的是得到Blob或Clob的对象后,我们并没有得到任何数据,但是我们可以这两个接口中的方法得到数据

例如:

Blob b=resultSet.getBlob(1);

InputStream bin=b.getBinaryStryeam();

Clob c=resultSet.getClob(2);

Reader cReader=c.getCharacterStream():

关于Clob类型的读取可以使用更直接的方法,就是直接通过ResultSet.getCharacterStream();方法获得字符流,但该方法并不安全,所以建议还是使用上面例子的方法获取Reader。

另外还有一种获取方法,不使用数据流,而是使用数据块。

例如

Blob b=resultSet.getBlob(1);

byte data=b.getByte(0,b.length());

Clob c=resultSet.getClob(2);

String str=c.getSubString(0,c.length()):

在这里我要说明一下,这个方法其实并不安全,如果你很细心的话,那很容易就

能发现getByte()和getSubString()两个方法中的第二个参数都是int类型的,而BLOB和CLOB是用来存储大量数据的。而且Bolb.length()和Clob.length()的返回值都是long类型的,所以很不安全。这里不建议使用。但为什么要在这里提到这个方法呢?稍候告诉你答案,这里你需要记住使用数据块是一种方法。

在存储的时候也同样的在PreparedStatement和CallableStatememt中,以参数的形式使用setBlob()和setClob方法把Blob和Clob对象作为参数传递给SQL。这听起来似乎很简单对吧,但是并非我们想象的这样,很不幸由于这两个类型的特殊,JDBC并没有提供独立于数据库驱动的Blob和Clob建立对象。因此需要自己编写与驱动有关的代码,但这样又牵掣到移植性。怎样才是解决办法呢?这就要用到前面说过的思想了使用数据块进行写操作。同样用PreparedStatement 和CallableStatememt类,但参数的设置可以换为setAsciiStream、setBinaryStream、setCharacterStream、setObject(当然前3个同样存在长度的问题)

下面给大家个例子以方便大家理解

public void insertFile(File f) throws Exception{

FileInputStream fis=new FileInputStream(f,Connection conn);

byte[] buffer=new byte[1024];

data=null;

int sept=0;int len=0;

while((sept=fis.read(buffer))!=-1){

if(data==null){

len=sept;

data=buffer;

}else{

byte[] temp;

int tempLength;

tempLength=len+sept;

temp=new byte[tempLength];

System.arraycopy(data,0,temp,0,len);

System.arraycopy(buffer,0,temp,len,sept);

data=temp;

len=tempLength;

}

if(len!=data.length()){

byte temp=new byte[len];

System.arraycopy(data,0,temp,0,len);

data=temp;

}

}

String sql="insert into fileData (filename,blobData) value(?,?)"; PreparedStatement ps=conn.prepareStatement(sql);

ps.setString(1,f.getName());

ps.setObject(2,data);

ps.executeUpdate();

}

最后由于刚刚说过Clob类型读取字符的长度问题,这里再给大家一段代码,希望对你有帮助

public static String getClobString(ResultSet rs, int col) {

try {

Clob c=resultSet.getClob(2);

Reader reader=c.getCharacterStream():

if (reader == null) {

return null;

}

StringBuffer sb = new StringBuffer();

char[] charbuf = new char[4096];

for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {

sb.append(charbuf, 0, i);

}

return sb.toString();

} catch (Exception e) {

return "";

}

}

另外似乎前面还提到过LIKE检索的问题。LONGVARCHAR类型中不可以用LIKE查找(至少ORA中不可以使用,其他的数据库我没有试过),在ORA中我们可以使用这样一个函数dbms_lob.instr来代替LIKE来个例子吧

select docid,dat0 from text where dbms_lob.instr(dat0,'魏',1,1)>0

在text表中有两个字段docid用来放文档编号dat0为clob类型存放文章内容;这句话的意思就是检索第一条dat0中出现第一次"魏"字的数据。听起来这个检索的数据有点象google的“手气不错”

java基本数据类型习题(选择24)

1、下列哪一个是合法的标识符: A、12class; B、+viod; C、-5; D、_black; 2、下列哪一个不是JAVA语言中保留字: A、if; B、sizeof; C、private; D、null; 3、下列描述中正确的一项是: A、标识符首字符的后面可以跟数字; B、标识符不区分大小写; C、复合数据类型变量包括布尔型、字符型、浮点型; D、数组属于基本数据类型; 4、下列哪一项不属于变量的组成部分: A、变量名; B、变量属性; C、变量初值; D、变量大小; 5、下列关于变量组成部分描述正确的一项是: A、变量名不是标识符;

B、变量名是标识符; C、浮点型属于复合类型; D、变量属性分为:基本类型和符合类型; 6、下列选项中,哪一项不属于JAVA语言的简单数据类型: A、整数型; B、数组; C、字符型; D、浮点型; 7、下列关于变量作用域的描述中,不正确的一项是: A、变量属性是用来描述变量作用域的; B、局部变量作用域只能是它所在的方法的代码段; C、类变量能在类的方法中声明; D、类变量的作用域是整个类; 8、下列关于基本数据类型的说法中,不正确的一项是: A、boolean是JAVA非凡的置值,或者为真或者为假; B、float是带符号的32位浮点数; C、double是带符号的64位浮点数; D、char应该上是8位的Unicode字符; 9、下列关于溢出的说法中,正确的一项是: A、一个整型的数据达到整型能表示的最大数值后,再加1,则机器产生上溢,结果为整型的最大值; B、一个整型的数据达到整型能表示的最小数值后,再减1,

Java 基本数据类型取值范围讲解

Java 基本数据类型取值范围讲解 一、Java的类型词语理解: 1) 原始数据类型,简单类型,基本类型都是一个含义; 2)复合类型,扩展类型,复杂类型、引用类型都是一个含义; 3)浮点类型,实数、实型都是一个含义; 4)逻辑型、布尔型都是一个含义; 5)本人个人认同的类型分类: 阅读时需要理解: 定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数; 常量:就是直接的值; 变量:放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的; 二、Java数据类型基本概念: 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象

原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。 基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。 引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。 三、Java中的数据类型与内存的关系 在Java中,每个存放数据的变量都是有类型的,如: char ch;float x;inta,b,c; ch是字符型的,就会分配到2个字节内存。不同类型的变量在内存中分配的字节数不同,同时存储方式也 是不同的。 所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数 据在内存的存储方式。 四、Java数据类型在内存中的存储: 1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内 存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型; 2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存 模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储 在有序的内存栈上的,而对象本身的值存储在内存堆上的; 区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念), 基本类型和引用类型的内存模型本质上是不一样的。 例1:我们分析一下”==“和equals()的区别。 首先,我定以两个String对象 String a="abc";

Java中八种基本数据类型和八种封装数据类型

Java中八种基本数据类型和八种封装数据类型 初使值的求解过程及比较 作者:Zealjiang 1.八种基本数据类型 创建名为MemberTestBasic的java文件,其内容如下:public class MemberTestBasic { /** 八种基本类型 int, short, float ,double, long, boolean, byte, char */ int i; short s; float f; double d; long l; boolean bo; byte by; char c; public static void main(String[] args) { //创建对象m

MemberTestBasic m=new MemberTestBasic(); m.printMember(); } //为对象m创建一个printMember方法 public void printMember() { System.out.print("int->"+i+"\n"); System.out.print("short->"+s+"\n"); System.out.print("float->"+f+"\n"); System.out.print("double->"+d+"\n"); System.out.print("long->"+l+"\n"); System.out.print("boolean->"+bo+"\n"); System.out.print("byte->"+by+"\n"); System.out.print("char->"+c+"\n"); } } 运行结果如下:

实验3 JAVA基本数据类型

实训报告 实验三JA V A基本数据类型(2) 【实验目的】 1.掌握标识符的定义规则。 2.掌握表达式的组成。 3.掌握Java 基本数据类型及其使用方法。 4.理解定义变量的作用,掌握定义变量的方法。 5.掌握各种运算符的使用及其优先级控制。 6.通过以上内容,掌握Java 语言的编程规则。 【预习内容】 1.一个声明Java 不同数据类型:整形、浮点型、字符型等类型的特点。 2.JAVA各类运算符:算术运算符、关系运算符、逻辑运算符的使用方法。 3. JAVA各类表达式:算术表达式、关系表达式、逻辑表达式的综合应用。 4.熟练掌握JAVA常用输入输出方法的使用。 5.System.out以及Scanner类的使用的。 【实验内容及步骤】 1、请利用Scanner类通过键盘输入三个不同值的整数a、b和c,并将中间值的数显示于屏幕上。 [程序清单] import java.util.Scanner; public class xjp1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int a,b,c; System.out.print("请输入a:"); a = scan.nextInt(); System.out.print("请输入b:"); b = scan.nextInt();

System.out.print("请输入c:"); c = scan.nextInt(); if(a>b && a>c) { if(b>c) System.out.println("中间值=" + b); else System.out.println("中间值=" + c); } if(b>a && b>c) { if(a>c) System.out.println("中间值=" + a); else System.out.println("中间值=" + c); } if(c>a && c>b) { if(a>b) System.out.println("中间值=" + a); else System.out.println("中间值=" + b); } } } [程序运行结果(截图)] 2、、请利用Scanner类通过键盘输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。 例:a等于10,b等于5, a+b的结果输成 10+5=15

java的基本数据类型有八种

java的基本数据类型有八种 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! java的基本数据类型有八种四类八种基本数据类型1. 整型byte(1字节)short (2个字节)int(4个字节)long (8个字节)2.浮点型float(4个字节)double(8个字节)3.逻辑性boolean(八分之一个字节)4.字符型char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值short Short (short)0int Integer 0long Long 0Lchar Char '\u0000'(什么都没有)float Floa t0.0fdouble Double 0.0dboolean Boolean false 若某个类的某个成员是基本数据类型,即使没有初始化,java也会确保它获得一个默认值,如上所示。(这种初始化方法只是用于成员变量,不适用于局部变量)。jdk1.5支持自动拆装箱。可以将基本数据类型转换成它的包装类装箱Integer a = new Integer ();a = 100;拆箱int b = new Intger(100);一个字节等于8位,一个字节等于256个数,-128到127一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节一个汉字两个字符,占用两个字节基本数据类型自动转换byte->short , char->int->longfloat->doubleint ->floatlong->double小可转大,大转小会失去精度。字符串与基本类型或其他类型间的转换⑴其它

Java基本数据类型详解——全英文

Java Basic Data Types Variables are nothing but reserved memory locations to store values. This means that when you create a variable you reserve some space in memory. Based on the data type of a variable, the operating system allocates memory and decides what can be stored in the reserved memory. Therefore, by assigning different data types to variables, you can store integers, decimals, or characters in these variables. There are two data types available in Java: 1.Primitive Data Types 2.Reference/Object Data Types Primitive Data Types: There are eight primitive data types supported by Java. Primitive data types are predefined by the language and named by a key word. Let us now look into detail about the eight primitive data types. byte: Byte data type is a 8-bit signed two.s complement integer. Minimum value is -128 (-2^7) Maximum value is 127 (inclusive)(2^7 -1) Default value is 0 Byte data type is used to save space in large arrays, mainly in place of integers, since a byte is four times smaller than an int. Example : byte a = 100 , byte b = -50 short: Short data type is a 16-bit signed two's complement integer. Minimum value is -32,768 (-2^15) Maximum value is 32,767(inclusive) (2^15 -1) Short data type can also be used to save memory as byte data type. A short is 2 times smaller than an int Default value is 0. Example : short s= 10000 , short r = -20000

java基本数据类型练习题

1 . 用8位无符号二进制数能表示的最大十进制数为 ( C ) A. 127 B. 128 C. 255 D. 256 2 .以下能作为char类型的字面值的有( B ) A. "e" B. 'f' C. '\u12' D. '\u0012' E. '\n' 3 . byte变量的取值范围是( B ) A. 0~65535 B. -128~127 C. -256-255 D. 0~32767 4. 以下选项中正确的有(AC ) A. int i = 32; B. float f = 45.32; C. double d=3.2; D. double d=9.21D; 5 .假定x和y为double型,则表达式x=2,y=x+3/2的值是( D ) A. 3.5 B. 3 C. 2.0 D. 3.0 6 .下列对于>>和>>>操作符描述正确的是( ) A.当左面的操作数是正数时,>>和>>>结果相同。 B. B. (-1 >> 1)的结果是0。 C. C. (-1 >>> 1) 的结果是-1。 D. 只有在右面的操作数大于等于1时, >>> 才会返回负数。 7 .有如下一段代码: 1)public class ReturnIt{ 2) returnType methodA(byte x, double y){ 3) return x/y*2; 4) } 5) } 在第2行中,方法methodA的有效返回类型returnType应该是?(D) A. int B. byte C. short D. double 8. 下列代码的执行结果是( D ) 1)public class Beirun{ 2) public static void main(String args[]){ 3) float t=9.0f; 4) int q=5; 5) System.out.println((t++)*(--q)); 6) } 7)} A. 40 B. 40.0 C. 36 D. 36.0 9.下列代码的执行结果是( D ) 1)public class Beirun{ 2) public static void main(String args[]){ 3) System.out.println(5/2); 4) } 5)} A. 2.5 B. 2.0 C. 2.50 D. 2 10. 下列代码的执行结果是( B ) 1)public class Beirun{ 2) public static void main(String args[]){

java中基本数据类型的取值范围

我们前面提到变量的声明格式:变量类型变量名; 这里我们学习JAVA的数据类型. 数据类型可以分为两大类: 1)基本类型; 2)扩展类型。 本节中,我们就一起来学习一下Java语言的基本数据类型。它包括类型描述取值范围 Boolean 布尔型只有两个值true、false Char 字符型 Byte 8位带符号整数 -128到127之间的任意整数 Short 16位无符号整数 -32768~32767之间的任意整数 Int 32位带符号整数 -2^31到2^31-1之间的任意整数 Long 64位带符号整数 -2^63到2^63-1之间的任意整数 Float 32位单精度浮点数根据IEEE754-1985标准 Double 64位双精度浮点数根据IEEE754-1985标准 一些提示: 不象其它程序设计语言,Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。 1> boolean型 在上一章的逻辑运算符中,我们就已经看到过了取值为true和false的变量,这种变量称为boolean型变量。 实例说明 源程序:test601.java public class test601 { public static void main(string args[]) { boolean x=true; boolean y=false; System.out.println("x&&y="+(x&&y)); System.out.println("x||y="+(x||y)); System.out.println("x^y="+(x^y)); System.out.println("!x="+(!x)); } }

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

java基本数据类型与其封装类 1 Boolean VS boolean public final class Boolean extends [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=fil e:///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 Byte extends [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=fil e:///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 Character extends [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=fil e:///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 Double extends [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=fil e:///G:/html_zh_CN/html/zh_CN/api/java/lang/Double.html]Double[/url]> Double类在对象中包装了一个基本类型double的值。每个Double类型的对象都包含一个double类型的字段。 此外,该类还提供了多个方法,可以将double转换为String,将String转换为double,还提供了其他一些处理double时有用的常量和方法。

Java的原始数据类型一共就8个

Java的原始数据类型一共就8个,分别是:byte、short、int、long、boolean、char、float、double。注意这些是大小写敏感的,而Boolean是boolean的封装类(wrapper class)。 在java中一个类只能有一个直接父类,但是可以实现多个接口,在继承的同时可以实现接口,之所以取消多继承的原因是多继承使得代码产生很多问题,而使 用单一继承则可以使代码更可靠。 Java有四种访问类型,分别为:public、protected、default、private,其中public变量可以被所有的外部类访问,而protected可以被同一个包及该类的子类访问,default即没有任何修饰符的变量,可以被同一个包中的类访问,而private变量只能在该类内部被访问。题目中的外部类应该理解为除该类自身的所有其他类,因此只有使用private可以达到要求。 类文档API的内容主要是:类层次、类及用途描述、成员变量列表、构造方法列表、成员方法列表、从类层次上继承的方法列表、成员变量的详细说明、构造方法详细说明、成员方法详细说明。 类中有几种变量,分别是:局部变量(local\automatic\temporary\stack variable)是定义在方法里的变量;实例变量(instance valriable)是在方法外而在类声明内定义的变量,有时也叫成员变量;类变量(class variable)是用关键字static声明的实例变量。它们的生存期分别是:局部变量在定义该变量的方法被调用时创建,而在该方法退出后被撤销;实例变量在使用newr Xxxx()创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;类变量在该类被加载时被创建,不一定要用new Xxxx()创建,所有该类的实例对象共享该类变量,其生存期是类的生存期。任何变量在使用前都必须初始化,但需要指出的是局部变量必须显式初始化。而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的默认值,整型是0,布尔型是false,而浮点型是0.0f,引用类型(类类型)的实例变量的默认值是null(没有进行实际的初始

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

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。

第二章JAVA的基本数据类型

第2章Java的基本数据类型 本章试验的主要任务是正确理解和掌握Java基本类型数据的使用方法,包括:掌握各种不同类型数据之间的转换规则、运算规则;学会使用Java运算符、表达式,掌握运算符的优先级、表达式的运算规则。 2.1 实验一:Java 的基本类型数据的应用 1. 实验目的 1) 了解Java的基本数据类型的特点; 2) 掌握各种类型变量的声明、赋值、转换及运算方式。 2. 实验要求 编写并实现程序,完成对基本类型变量的声明、赋值,并对变量进行简单运算输出运算结果。 3. 实验内容 实验示例 2.1.1. 在程序中实现对整型变量的定义、赋值、运算并输出运算结果。执行程序并分析运算结果。 使用Jcreator开发工具完成实验,其操作步骤如下: ⑴执行JCreator,进入JCreator开发环境窗口; ⑵为了方便起见,关闭一些视图窗口,只留下编辑和常规输出(Build Output)窗口(如图2-1所示); ⑶执行“File”→“New”菜单下的“File…”项,在“File Wizard”对话框的文件名栏中输入“Practice2_1”,根据需要,可以改变文件路径。一般来说,可以创建一个文件夹,用该文件夹来存放你开发程序,例如E:\javaTest; ⑷新建文件后,在编辑窗口输入如图2-1中所示的java程序源代码; ⑸完成代码的输入之后,执行“Build”菜单中的“Compile File”命令项或单击工具栏上的编译按钮编译源程序文件; ⑹完成编译之后,执行“Build”菜单中的“Execute File”命令项或单击工具栏上的运行程序按钮执行程序。执行结果如图2-2所示。 下边我们来分析一下程序及程序的输出结果: 在程序中,定义了两个字节(byte)变量b1和b2、两个短整型(shortt)变量s1和s2、两个整型(int)变量i1和i2、两个长整数变量(long)l1和l2,并分别对它们进行了简单的赋值运算。最后分别输出它们的十进制值,s1的二进制表示形式的值,l2十六进制表示形式的值。

2.JAVA的基本数据类型,运算符和流程控制_选择题

1. 以下能作为char类型的字面值的有:() A “e” B ‘f’ C ‘\u12’ D ‘\u0012’ 2. byte变量的取值范围是:() A 0 - 65535 B -128 – 127 C -256 – 255 D 0 - 32767 3. 以下选项中正确的有:() A int i = 32; B float f = 45.32; C double d=3.2; 4. 假定x和y为double型,则表达式x=2,y=x+3/2的值是(D) A 3.500000 B 3 C 2.000000 D 3.000000 5. 下列对于>>和>>>操作符描述正确的是?() A 当左面的操作数是正数时, >> 和 >>> 结果相同。 B (-1 >> 1)的结果是0。 C (-1 >>> 1) 的结果是 -1。 D 只有在右面的操作数大于等于1时, >>> 才会返回负数。 6. 有如下一段代码: 1)public class ReturnIt{ 2) returnType methodA(byte x, double y){ 3) return x/y*2; 4) } 5) } 在第2行中,方法methodA的有效返回类型returnType应该是?() A int B byte C short D double 7. 根据以下程序选择正确答案:() public class Test{ static int total = 10;

public static void main(String args []) { new Test(); } public Test (){ System.out.println("In test"); System.out.println(this); int temp = this.total; if (temp > 5) { System.out.println(temp); } } } A 编译出错 B 运行时有异常 C 编译运行都正确 8. 以下switch表达语句正确的是:() A public void switchTest (char c){switch(c){…}} B public void switchTest(long c){switch(c){…}} C public void switchTest(byte c){switch(c){…}} D public void switchTest(double c){switch(c){…}} 9. int i=1,j=10; do{ if(i++>--j) continue; }while(i<5); 上面的代码执行后,i和j的值各是多少?() A i=6 j=5 B i=5 j=5 C i=6 j=4 D i=5 j=6

JAVA中常用数据类型之间转换的方法

Java中常用数据类型之间转换的方法 Java中几种常用的数据类型之间转换方法: 1.short-->int转换 exp:short shortvar=0; int intvar=0; shortvar=(short)intvar 2.int-->short转换 exp:short shortvar=0; int intvar=0; intvar=shortvar; 3.int->String转换 exp:int intvar=1; String stringvar; Stringvar=string.valueOf(intvar); 4.float->String转换 exp:float floatvar=9.99f; String stringvar;

Stringvar=String.valueOf(floatvar); 5.double->String转换 exp double doublevar=99999999.99; String stringvar; Stringvar=String.valueOf(doublevar); 6.char->String转换 exp char charvar=’a’; String stringvar; Stringvar=String.valueOf(charvar); 7String->int、float、long、double转换Exp String intstring=”10”; String floatstring=”10.1f”; String longstring=”99999999”; String doubleString=”99999999.9”; Int I=Integer.parseInt(intstring); Float f=Integer.parseInt(floatstring); Long lo=long.parseInt(longstring); Double d=double.parseInt(doublestring); 8String->byte、short转换

Java中的基本数据类型

Java 中的基本数据类型 Java 中的数据类型可以分为两种: 基本数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 可以说,除了基本类型以外的所有类型都是引用数据类型 主要包括类,接口,数组等 如下图所示 基本数据类型在内存中的分配 数据类型 基本数据类型 引用数据类型 数值型 字符型(char ) 布尔型(boolean ) 整数类型(byte, short, int, long ) 浮点类型(float, double ) 类(class ) 接口(interface ) 数组( [ ] )

注意!:表格里的^代表的是次方 基本数据类型的转换 有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。 1 自动转换 具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并进行调用。这些类型由“小”到“大”分别为(byte,short,char)--int--long--float—double。这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。 例如 byte b=10; int i=b;(将byte数据向int赋值时,完成了自动转换) char c=’A’; int i=c;(这时会将’A’对应的ASCII码值赋值给i) 2 强制转换 将“大”数据转换为“小”数据时,你可以使用强制类型转换。 例如: int n=(int)1.23456; 输出结果为1 可以想象,这种转换肯定可能会导致溢出或精度的下降。 注意 当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。

java的基本数据类型

byte(字节) 8 -128 - 127 0 shot(短整型) 16 -32768 - 32768 0 int(整型) 32 -2147483648-2147483648 0 long(长整型) 64 -9233372036854477808-9233372036854477808 0 float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’ boolean(布尔型) 1 true/false false 1. Java的简单类型及其封装器类 Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA 中还存在另外一种基本类型void,它也有对应的包装类https://www.wendangku.net/doc/a72930939.html,ng.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下: byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。 short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。 int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。 long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。 float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。 double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。 boolean:只有true和false两个取值。 char:16位,存储Unicode码,用单引号赋值。 Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。

Java基本数据类型

Java基本数据类型 Java是一种强类型语言,即Java中的每一个变量都必须有一个声明的类型。在Java中,有两种类型: 基本类型(primitive type) 有八种 逻辑类boolean 文本类char 整数类byte, short, int, long 浮点类double, float 本章主要讲述基本数据类型。 一.逻辑类──boolean 与C语言不同,Java定义了专门的布尔类型。布尔类型的文字只有两个,

它们是true和false。布尔类型的变量使用关键字boolean来定义。布尔型的文字和变量常常被用在条件判断语句中。 注意:在Java中,布尔型变量不是数值型变量,它不能被转换成任意一种类型。数值型变量也不能被当作布尔型变量使用。这一点和C语言完全不同。 以下是一个有关boolean类型变量的声明和初始化: boolean truth = true; 二.文本类──char和String 1、使用char类型可表示单个字符。一个char代表一个16-bit无符号的(不分正负的)Unicode字符。一个char文字必须包含在单引号内(…?)。 …a? …\t? 一个制表符 …\u????? 一个特殊的Unicode字符。????应严格按照四个16进制数字进行替换 和在C语言中一样,Java也支持转义字符。Java中使用“\”将转义字符与一般的字符区分开来。 Java中的转义字符

2、String不是原始类型,而是一个类(class),它被用来表示字符序列。字符本身符合Unicode标准,且上述char类型的反斜线符号适用于String。与C和C++不同,String不能用\0作为结束。 String 不是一个原始数据类型,它是一个类 具有用双引号引用的文字 “The quick brown fox jumped over the lazy dog.” 可按如下情形使用: String greeting = “Good Morning!! \n”; String err_meg = “ record not found !”; 三.整数类──byte, short, int, long 在Java编程语言中有四种整数类型,每种类型可使用关键字byte, short, int 和long中的任意一个进行声明。 整数类型的文字可使用十进制、八进制和16进制表示,如下所示: 2 十进制值是2 047 首位的0表示这是一个八进制的数值 0xBBAC 首位的0x表示这是一个16进制的数值 注意──所有Java编程语言中的整数类型都是带符号的数字。 整数数据类型—范围 Integer Length Name or Type Range 8 bits byte -2 7 ... 2 7 -1 16 bits short -2 15 ... 2 15 -1 32 bit int -2 31 ... 2 31 -1 64 bits long -2 63 ... 2 63 -1 int是最常用的整数类型。但是如果你要表达很大的数,比如在地理信息系

JAVA中8中基本数据类型默认值

java 8种基本数据类型的默认值 (2007-07-12 09:50:19) 转载▼ 标签: 默认值 8种基本数据类型(primitive type)在只做了声明,而未被初始化的时候,他们的默认值 8种基本数据类型分别是:byte,short,int,long,(四种整型) char() float,double(两种浮点型) boolean(一种用于表示真假的类型) 他们的默认值分别是: 可以用以下代码测试: PrimitiveType.java public class PrimitiveType{ boolean t; char c; byte b; short s; int i; long l; float f; double d; void print(){ System.out.println("boolean "+t); System.out.println("char "+c); System.out.println("byte "+b); System.out.println("short "+s); System.out.println("int "+i); System.out.println("long "+l); System.out.println("float "+f); System.out.println("double "+d); } public static void main(String args[]){ PrimitiveType pt=new PrimitiveType(); pt.print(); }

} 得出的结果为: byte:0 short:0 int:0 long:0 char: _ float:0.0 double:0.0 boolean: false 除了这8种基本类型以外的变量(比如String,基本类型的数组),他们的默认值都是null ××××××××××××××××××××××××××××××××××× 各种变量(无论是基本的变量,还是其他对象类型的变量,数组类型的变量) 他们在没有被显示初始化的时候,jdk 都会自动赋予默认值给他们, 只不过要注意的是全局变量和局部变量的不同之处: 当全局变量没有被显示初始化,jdk会自动赋予默认值给他,并且,当你在其他地方引用该变量的时候,编译器是不会报错的。 而局部变量在没有被显示初始化情况下,jdk 同样也会自动赋予他默认值,可不同之处就在于,你无法引用他,因为编译器会在你要引用的位置报错。 这就是JDK的规定。 所以局部变量在声明的时候,最好直接显示初始化他。 可以尝试将上面的代码改成以下的,看看问题是怎么出现的。 public class PrimitiveType{ public static void main(String args[]){ boolean t; char c; byte b; short s; int i; long l; float f; double d;

相关文档
相关文档 最新文档