java 强制类型转换的规则是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 强制类型转换的规则是啥?相关的知识,希望对你有一定的参考价值。
参考技术A1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如:int型转换成double型,char型转换成int型等等;
2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;
3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;
4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回。
扩展资料
C++中强制类型转换函数有4个:
1、const_cast(用于去除const属性)。
2、static_cast(用于基本类型的强制转换)。
3、dynamic_cast(用于多态类型之间的类型转换)。
4、reinterpreter_cast(用于不同类型之间的指针之间的转换,最常用的就是不同类型之间函数指针的转换)。
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。
在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。
在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。
参考资料
百度百科-强制类型转换
SQL SERVER中强制类型转换cast和convert的区别
参考技术A 几乎一样,但是convert比cast多了个style可以让转换结果变成指定的显示样式
以下是网上找到的参考资料
sql中的cast
和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。cast
和
convert
提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style,可以转化成不同时间的格式。
一、语法:
1、使用
cast
cast
(
expression
as
data_type
)
2、使用
convert
convert
(data_type[(length)],
expression
[,
style])
3、参数说明
expression
是任何有效的表达式。
data_type:
目标系统所提供的数据类型,包括
bigint
和
sql_variant。不能使用用户定义的数据类型。
length
nchar、nvarchar、char、varchar、binary
或
varbinary
数据类型的可选参数。
style
日期格式样式,借以将
datetime
或
smalldatetime
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型);或者字符串格式样式,借以将
float、real、money
或
smallmoney
数据转换为字符数据(nchar、nvarchar、char、varchar、nchar
或
nvarchar
数据类型)。
二、cast和convert的代码示例
sql
代码
复制
select
cast('123'
as
int)
--
123
select
convert(int,
'123')
--
123
select
cast(123.4
as
int)
--
123
select
convert(int,
123.4)
--
123
select
cast('123.4'
as
int)
select
convert(int,
'123.4')
--
conversion
failed
when
converting
the
varchar
value
'123.4'
to
data
type
int.
select
cast('123.4'
as
decimal)
--
123
select
convert(decimal,
'123.4')
--
123
select
cast('123.4'
as
decimal(9,2))
--
123.40
select
convert(decimal(9,2),
'123.4')
--
123.40
declare
@num
money
set
@num
=
1234.56
select
convert(varchar(20),
@num,
0)
--
1234.56
select
convert(varchar(20),
@num,
1)
--
1,234.56
select
convert(varchar(20),
@num,
2)
--
1234.5600
三、convert函数的style参数说明
1、date
和
time
样式
不带世纪数位
(yy)
带世纪数位
(yyyy)
输入/输出
-
0
或
100
mon
dd
yyyy
hh:miam(或
pm)
1
101
1
=
mm/dd/yy
101
=
mm/dd/yyyy
2
102
2
=
yy.mm.dd
102
=
yyyy.mm.dd
3
103
3
=
dd/mm/yy
103
=
dd/mm/yyyy
4
104
4
=
dd.mm.yy
104
=
dd.mm.yyyy
5
105
5
=
dd-mm-yy
105
=
dd-mm-yyyy
6
106
6
=
dd
mon
yy
106
=
dd
mon
yyyy
7
107
7
=
mon
dd,
yy
107
=
mon
dd,
yyyy
8
108
hh:mi:ss
-
9
或
109
mon
dd
yyyy
hh:mi:ss:mmmam(或
pm)
10
110
10
=
mm-dd-yy
110
=
mm-dd-yyyy
11
111
11
=
yy/mm/dd
111
=
yyyy/mm/dd
12
112
12
=
yymmdd
112
=
yyyymmdd
-
13
或
113
dd
mon
yyyy
hh:mi:ss:mmm(24h)
14
114
dd
mon
yyyy
hh:mi:ss:mmm(24h)
-
20
或
120
yyyy-mm-dd
hh:mi:ss(24h)
-
21
或
121
yyyy-mm-dd
hh:mi:ss.mmm(24h)
-
126
yyyy-mm-ddthh:mi:ss.mmm(无空格)
-
127
yyyy-mm-ddthh:mi:ss.mmmz(无空格)
-
130
dd
mon
yyyy
hh:mi:ss:mmmam
-
131
dd/mm/yyyy
hh:mi:ss:mmmam
2、float
和
real
样式
值
输出
0(默认值)
最多包含
6
位。
根据需要使用科学记数法。
1
始终为
8
位值。
始终使用科学记数法。
2
始终为
16
位值。
始终使用科学记数法。
3、money
和
smallmoney
样式
值
输出
0
小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如
4235.98。
1
小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如
3,510.92。
2
小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如
3,510.92。
126
转换为
char(n)
或
varchar(n)
时,等同于样式
2
以上是关于java 强制类型转换的规则是啥?的主要内容,如果未能解决你的问题,请参考以下文章