java获取数据类型
① java中的数据类型
java中的数据类型分两大类分别是基本类型和引用数据类型。
一、基本类型
1)Java中的数据类型有八种,即基本类型。具体如下:
数据类型 位数 取值范围:
Boolean 1 True|False
Byte 8 -128~127
Short 16 -32768~32767
Int 32 -2e31~2e31-1
Long 64 -2e63~2e63-1
Float 32 略
Double 64 略
Char 16 0~65535
‘ /u0000’ ~’uFFFF‘
二、引用数据类型
1)定义一个byte变量 如:byte b= -256;
由于-256超出了’Byte’的取值范围,所以要使程序不报错,有一下几种解决方法:
A:更改变量的数据类型(如:将byte改为int);
B:更改变量名的赋值,使其包括在变量的数据类型的值域内;
C:进行强制转换:如: byte b=(byte)-256:
‘进行强制转换后,虽然程序不在报错,但是有可能会使原值的精度收到影响’
D:定义一个浮点类型数时,记得要在数值的后面加上“f”或“F”。(如:Float f=10000.0f;)
E:若定义 Char c=a;定义 int n=c;则输出的n值为“a“的ASCII值,即97。
2)引用数据类型的定义
A:对象都是引用数据类型
B:应用类型使用NEW调用构造方法进行赋值
C:在Java中,除了基本数据类型以外,其余的全都属于引用数据类型, 如:
a:API中的类,如String,File等;
b:数据;
c:自定义的类,如Cars,Student
d:对象全部是引用数据类型。
(1)java获取数据类型扩展阅读
其他数据类型:
在java中,String本身也提供了很多的方法供我们使用:
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取第一次出现在字符串中的字符:int index = 字符串.index('a');
获取在字符串中字符的索引位置:int index = 字符串.index('a',1);
如果想比较两个字符串是否相等:字符串.equeals(字符串);
判断字符串是否为空:字符串.isEmpty();
获取字符串的长度:字符串.length();
根据某一个条件,将字符串进行分割:字符串.split("abc");
根据条件取出内容:字符串.substring(开始位置,结束位置);
② Java如何获取Date类型且格式为yyyy-mm-dd的日期数据
@return返回长时间格式 yyyy-MM-dd HH:mm:ss
*/ public static Date getsqlDate() {
Date sqlDate = new java.sql.Date(new Date().getTime());
return sqlDate; }
/**
* 获取现在时间
@return返回长时间格式 yyyy-MM-dd HH:mm:ss
*/ public static Date getNowDate() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
ParsePosition pos = new ParsePosition(8);
java.sql 类 Date
java.lang.Object
java.util.Date
java.sql.Date
所有已实现的接口:
Serializable,Cloneable,Comparable<Date>
public class Dateextends Date
概述:一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。
为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
以上内容参考:网络-date
③ java 如何获取ResultSet 中各项的数据类型
JAVA中Resultset是一个类 而不是一个方法。记住啊。
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等。
结果集读取数据的方法主要是getXXX(),它的参数可以是整型,表示第几列(是从1开始的),还可以是列名。返回的是对应的XXX类型的值。如果对应那列时空值,XXX是对象的话返回XXX型的空值,如果XXX是数字类型,如Float等则返回0,boolean返回false。使用getString()可以返回所有的列的值,不过返回的都是字符串类型的。XXX可以代表的类型有:基本的数据类型如整型(int),布尔型(Boolean),浮点型(Float,Double)等,比特型(byte),还包括一些特殊的类型,如:日期类型(java.sql.Date),时间类型(java.sql.Time),时间戳类型(java.sql.Timestamp),大数型(BigDecimal和BigInteger等)等。还可以使用getArray(int colindex/String columnname),通过这个方法获得当前行中,colindex所在列的元素组成的对象的数组。使用getAsciiStream(
int colindex/String colname)可以获得该列对应的当前行的ascii流。也就是说所有的getXXX方法都是对当前行进行操作。
结果集从其使用的特点上可以分为四类,这四类的结果集的所具备的特点都是和Statement语句的创建有关,因为结果集是通过Statement语句执行后产生的,所以可以说,结果集具备何种特点,完全决定于Statement,当然我是说下面要将的四个特点,在Statement创建时包括三种类型。首先是无参数类型的,他对应的就是下面要介绍的基本的ResultSet对应的Statement。下面的代码中用到的Connection并没有对其初始化,变量conn代表的就是Connection对应的对象。SqlStr代表的是响应的SQL语句。
1、 最基本的ResultSet。
之所以说是最基本的ResultSet是因为,这个ResultSet他起到的作用就是完成了查询结果的存储功能,而且只能读去一次,不能够来回的滚动读取。这种结果集的创建方式如下:
Statement st = conn.CreateStatement
ResultSet rs = Statement.excuteQuery(sqlStr);
由于这种结果集不支持,滚动的读去功能所以,如果获得这样一个结果集,只能使用它里面的next()方法,逐个的读去数据。
2 可滚动的ResultSet类型。
这个类型支持前后滚动取得纪录next()、previous(),回到第一行first(),同时还支持要去的ResultSet中的第几行absolute(int n),以及移动到相对当前行的第几行relative(int n),要实现这样的ResultSet在创建Statement时用如下的方法。
Statement st = conn.createStatement(int resultSetType, int resultSetConcurrency)
ResultSet rs = st.executeQuery(sqlStr)
其中两个参数的意义是:
resultSetType是设置ResultSet对象的类型可滚动,或者是不可滚动。取值如下:
ResultSet.TYPE_FORWARD_ONLY只能向前滚动
ResultSet.TYPE_SCROLL_INSENSITIVE和Result.TYPE_SCROLL_SENSITIVE这两个方法都能够实现任意的前后滚动,使用各种移动的ResultSet指针的方法。二者的区别在于前者对于修改不敏感,而后者对于修改敏感。
resultSetConcurency是设置ResultSet对象能够修改的,取值如下:
ResultSet.CONCUR_READ_ONLY 设置为只读类型的参数。
ResultSet.CONCUR_UPDATABLE 设置为可修改类型的参数。
所以如果只是想要可以滚动的类型的Result只要把Statement如下赋值就行了。
Statement st = conn.createStatement(Result.TYPE_SCROLL_INSENITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.excuteQuery(sqlStr);
用这个Statement执行的查询语句得到的就是可滚动的ResultSet。
3、 可更新的ResultSet
这样的ResultSet对象可以完成对数据库中表的修改,但是我知道ResultSet只是相当于数据库中表的视图,所以并不时所有的ResultSet只要设置了可更新就能够完成更新的,能够完成更新的ResultSet的SQL语句必须要具备如下的属性:
a、只引用了单个表。
b、不含有join或者group by子句。
c、那些列中要包含主关键字。
具有上述条件的,可更新的ResultSet可以完成对数据的修改,可更新的结果集的创建方法是:
Statement st = createstatement(Result.TYPE_SCROLL_INSENSITIVE,Result.CONCUR_UPDATABLE)
4、 可保持的ResultSet
正常情况下如果使用Statement执行完一个查询,又去执行另一个查询时这时候第一个查询的结果集就会被关闭,也就是说,所有的Statement的查询对应的结果集是一个,如果调用Connection的commit()方法也会关闭结果集。可保持性就是指当ResultSet的结果被提交时,是被关闭还是不被关闭。JDBC2.0和1.0提供的都是提交后ResultSet就会被关闭。不过在JDBC3.0中,我们可以设置ResultSet是否关闭。要完成这样的ResultSet的对象的创建,要使用的Statement的创建要具有三个参数,这个Statement的创建方式也就是,我所说的Statement的第三种创建方式。如下:
Statement st=createStatement(int resultsetscrollable,int resultsetupdateable,int resultsetSetHoldability)
ResultSet rs = st.excuteQuery(sqlStr);
前两个参数和两个参数的createStatement方法中的参数是完全相同的,这里只介绍第三个参数:
resultSetHoldability表示在结果集提交后结果集是否打开,取值有两个:
ResultSet.HOLD_CURSORS_OVER_COMMIT:表示修改提交时,不关闭数据库。
ResultSet.CLOSE_CURSORS_AT_COMMIT:表示修改提交时ResultSet关闭。
④ java 获取对象的数据类型的方法
使用getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等等:
packagetest;
importjava.lang.reflect.Field;
importjava.lang.reflect.Method;
publicclassDemo2{
Stringusername="sss";
publicstaticvoidmain(String[]args),IllegalAccessException,NoSuchFieldException,SecurityException,NoSuchMethodException{
Demo2t=newDemo2();
if(Demo2.class==t.getClass()){
System.out.println("equal");
}
//获取类名
System.out.println(t.getClass().getName());
//获取父类名
System.out.println(t.getClass().getSuperclass());
//获取类中某个属性
Fieldf=t.getClass().getField("username");
//获取类中某个方法
Methodm=t.getClass().getDeclaredMethod("main",String[].class);
}
}
⑤ 在java中 如何获取变量的类型
java中获取变量的类型可以使用每个类型的getClass()方法来获得,示例如下:
classTest
{
publicstaticvoidmain(String[]args)
{
inti=1;//int类型变量
System.out.println(getType(i));//打印变量类型为int
}
publicstaticStringgetType(Objecto){//获取变量类型方法
returno.getClass().toString();//使用int类型的getClass()方法
}
}
⑥ Java中怎么知道一个变量的类型
复制下面代码:
class Test{
public static void main(String[] args){
int i=1; //int类型变量
System.out.println(getType(i)); //打印变量类型为int
}
public static String getType(Object o){ //获取变量类型方法
return o.getClass().toString(); //使用int类型的getClass()方法
}
}
(6)java获取数据类型扩展阅读:
java8种基本数据类型 (4种整型+2种浮点型+1种字符型+1种逻辑型)
4种整型:
byte-1 字节:-128~127 ;
short -2 字节:-32768~32767 ;
int-4 字节:-2^31~2^31-1;
long-8 字节:-2^63~2^63-11234。
2种浮点型
float-4 字节-32位IEEE 754单精度(有效位数6~7位);
double-8 字节-64位IEEE 754双精度(有效位数15位)。
1种字符型
char-2 字节-整个Unicode字符集。
1种逻辑型
boolean-1 字节-true或者false。
⑦ \请问java中如何获得数据类型
您好,提问者:
//如果要得到一个类的具体什么类型,需要进行反射操作,实例代码:
Stringstr="123";
System.out.println(str.getClass().getName());
输出:java.lang.String
可以查看一下API文档
⑧ java怎样读取数据库表中字段的数据类型
Java获取数据库的表中各字段的字段名,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class TestDemo {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://数据库IP地址:3306/数据库名称";
String user = "数据库用户名";
String pass = "数据库用户密码";
conn = DriverManager.getConnection(url, user, pass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
Connection conn = getConnection();
String sql = "select * from AccessType";
PreparedStatement stmt;
try {
stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();
for (int i = 1; i <= data.getColumnCount(); i++) {
// 获得所有列的数目及实际列数
int columnCount = data.getColumnCount();
// 获得指定列的列名
String columnName = data.getColumnName(i);
// 获得指定列的列值
int columnType = data.getColumnType(i);
// 获得指定列的数据类型名
String columnTypeName = data.getColumnTypeName(i);
// 所在的Catalog名字
String catalogName = data.getCatalogName(i);
// 对应数据类型的类
String columnClassName = data.getColumnClassName(i);
// 在数据库中类型的最大字符个数
int columnDisplaySize = data.getColumnDisplaySize(i);
// 默认的列的标题
String columnLabel = data.getColumnLabel(i);
// 获得列的模式
String schemaName = data.getSchemaName(i);
// 某列类型的精确度(类型的长度)
int precision = data.getPrecision(i);
// 小数点后的位数
int scale = data.getScale(i);
// 获取某列对应的表名
String tableName = data.getTableName(i);
// 是否自动递增
boolean isAutoInctement = data.isAutoIncrement(i);
// 在数据库中是否为货币型
boolean isCurrency = data.isCurrency(i);
// 是否为空
int isNullable = data.isNullable(i);
// 是否为只读
boolean isReadOnly = data.isReadOnly(i);
// 能否出现在where中
boolean isSearchable = data.isSearchable(i);
System.out.println(columnCount);
System.out.println("获得列" + i + "的字段名称:" + columnName);
System.out.println("获得列" + i + "的类型,返回SqlType中的编号:"+ columnType);
System.out.println("获得列" + i + "的数据类型名:" + columnTypeName);
System.out.println("获得列" + i + "所在的Catalog名字:"+ catalogName);
System.out.println("获得列" + i + "对应数据类型的类:"+ columnClassName);
System.out.println("获得列" + i + "在数据库中类型的最大字符个数:"+ columnDisplaySize);
System.out.println("获得列" + i + "的默认的列的标题:" + columnLabel);
System.out.println("获得列" + i + "的模式:" + schemaName);
System.out.println("获得列" + i + "类型的精确度(类型的长度):" + precision);
System.out.println("获得列" + i + "小数点后的位数:" + scale);
System.out.println("获得列" + i + "对应的表名:" + tableName);
System.out.println("获得列" + i + "是否自动递增:" + isAutoInctement);
System.out.println("获得列" + i + "在数据库中是否为货币型:" + isCurrency);
System.out.println("获得列" + i + "是否为空:" + isNullable);
System.out.println("获得列" + i + "是否为只读:" + isReadOnly);
System.out.println("获得列" + i + "能否出现在where中:"+ isSearchable);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}