Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
南宫梦沉
toBeTopJavaer
提交
73a4e0af
T
toBeTopJavaer
项目概览
南宫梦沉
/
toBeTopJavaer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
toBeTopJavaer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
73a4e0af
编写于
11月 15, 2020
作者:
B
baichangfu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
笔误勘正
上级
8440deea
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
4 addition
and
4 deletion
+4
-4
docs/basics/java-basic/switch-string.md
docs/basics/java-basic/switch-string.md
+2
-2
docs/basics/java-basic/value-of-vs-to-string.md
docs/basics/java-basic/value-of-vs-to-string.md
+2
-2
未找到文件。
docs/basics/java-basic/switch-string.md
浏览文件 @
73a4e0af
...
...
@@ -71,7 +71,7 @@ Java 7中,switch的参数可以是String类型了,这对我们来说是一
}
编译后的代码如下:
`public class switchDemoChar
编译后的代码如下:
public class switchDemoChar
{
...
...
@@ -147,4 +147,4 @@ Java 7中,switch的参数可以是String类型了,这对我们来说是一
看到这个代码,你知道原来字符串的switch是通过
`equals()`
和
`hashCode()`
方法来实现的。
**记住,switch中只能使用整型**
,比如
`byte`
。
`short`
,
`char`
(ackii码是整型)以及
`int`
。还好
`hashCode()`
方法返回的是
`int`
,而不是
`long`
。通过这个很容易记住
`hashCode`
返回的是
`int`
这个事实。仔细看下可以发现,进行
`switch`
的实际是哈希值,然后通过使用equals方法比较进行安全检查,这个检查是必要的,因为哈希可能会发生碰撞。因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。因为Java编译器只增加了一个
`equals`
方法,如果你比较的是字符串字面量的话会非常快,比如”abc” ==”abc”。如果你把
`hashCode()`
方法的调用也考虑进来了,那么还会再多一次的调用开销,因为字符串一旦创建了,它就会把哈希值缓存起来。因此如果这个
`switch`
语句是用在一个循环里的,比如逐项处理某个值,或者游戏引擎循环地渲染屏幕,这里
`hashCode()`
方法的调用开销其实不会很大。
好,以上就是关于switch对整型、字符型、和字符串型的支持的实现方式,总结一下我们可以发现,
**其实switch只支持一种数据类型,那就是整型,其他数据类型都是转换成整型之后
在
使用switch的。**
好,以上就是关于switch对整型、字符型、和字符串型的支持的实现方式,总结一下我们可以发现,
**其实switch只支持一种数据类型,那就是整型,其他数据类型都是转换成整型之后
再
使用switch的。**
docs/basics/java-basic/value-of-vs-to-string.md
浏览文件 @
73a4e0af
我们有三种方式将一个int类型的变量变成
呢过
String类型,那么他们有什么区别?
我们有三种方式将一个int类型的变量变成
一个
String类型,那么他们有什么区别?
1.int i = 5;
2.String i1 = "" + i;
...
...
@@ -7,4 +7,4 @@
第三行和第四行没有任何区别,因为String.valueOf(i)也是调用Integer.toString(i)来实现的。
第二行代码其实是String i1 = (new StringBuilder()).append(i).toString();,首先创建一个StringBuilder对象,然后再调用append方法,再调用toString方法。
\ No newline at end of file
第二行代码其实是String i1 = (new StringBuilder()).append(i).toString();,首先创建一个StringBuilder对象,然后再调用append方法,再调用toString方法。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录