- 浏览: 297793 次
- 性别:
- 来自: 杭州
博客专栏
-
Java面试
浏览量:0
文章分类
- 全部博客 (133)
- Struts2 (4)
- Hibernate (2)
- Spring (3)
- Java常识小积累 (18)
- Linux (6)
- Oscache (1)
- 面试技巧 (2)
- Eclipse (4)
- JavaScript (21)
- 生活 (7)
- Mysql (3)
- 网络优秀文章 (1)
- Freemaker (1)
- Tcp和UDP (1)
- ubuntu -java (1)
- Oracle (14)
- 重构 (1)
- webservice (4)
- Lucene (1)
- UML与OOA/D (1)
- 软件杂谈 (2)
- Nosql(Redis) (1)
- 团队开发 (1)
- Oracle 设计 (1)
- velocity (1)
- 面试那些事儿 (1)
- 技术 (1)
- 互联网 (1)
- 数据库 (1)
- jquery (1)
- java (2)
- fastjson (1)
- Remoting (1)
- 算法 (1)
- 学习技巧 (1)
- POI (3)
- FusionCharts (1)
- 学习资源 (1)
- 设计模式 (2)
- CSS (1)
- 技术边缘 (3)
- 生活感想 (0)
- JVM (1)
- JSON (0)
- 前端 (1)
- cxf (1)
- 分布式 (1)
- 阿萨德飞 (0)
- Java面试中的知识 (2)
- redis (1)
- 开发工具使用 (3)
最新评论
-
liushimiao0104:
请问下怎么删除word里面的图片呢
POI向word添加图片,表格 -
chpn:
addBatch确实可以1.这个和复合索引没得毛关系2.in查 ...
mysql 超1亿数据,优化分页查询 -
步青龙:
dagf113225 写道请问,这个mysql执行SQL的花费 ...
mysql 超1亿数据,优化分页查询 -
dagf113225:
请问,这个mysql执行SQL的花费的时间的工具叫什么?谢谢! ...
mysql 超1亿数据,优化分页查询 -
步青龙:
white_crucifix 写道我怎么觉得builder模式 ...
Builder设计模式
String "a" + "b"+ "c";
到底生成了几个对象?这个问题在网上问了无数次了。
我也看的头昏眼花的,直接测试了一下。
public static void main(String[] args) {
String mango = "mango";
String s = "abc" + mango + "def";
System.out.println(s);
}
}
Test.java直接放在D盘下
cmd 命令行下的结果:
D:\>javac Test.java
D:\>java Test
abcmangodef
D:\>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: ldc #2; //String mango
2: astore_1
3: new #3; //class java/lang/StringBuilder
6: dup
7: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
10: ldc #5; //String abc
12: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
15: aload_1
16: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
19: ldc #7; //String def
21: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
24: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/la
ng/String;
27: astore_2
28: getstatic #9; //Field java/lang/System.out:Ljava/io/PrintStream;
31: aload_2
32: invokevirtual #10; //Method java/io/PrintStream.println:(Ljava/lang/St
ring;)V
35: return
}
D:\>
从这里可以看出编译器创建了一个StringBuilder对象,用以构造最终的String,并为每个字符串调用一次StringBuilder类的append()
到底编译器为String优化到了什么程度呢?写道
public String test(String[] fields){
String res = "";
for(int i = 0; i< fields.length;i++)
res+=fields[i];
return res;
}
}
C:\Documents and Settings\Administrator>D:
D:\>javac Test.java
D:\>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public java.lang.String test(java.lang.String[]);
Code:
0: ldc #2; //String
2: astore_2
3: iconst_0
4: istore_3
5: iload_3
6: aload_1
7: arraylength
8: if_icmpge 38
11: new #3; //class java/lang/StringBuilder
14: dup
15: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
18: aload_2
19: invokevirtual #5; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
22: aload_1
23: iload_3
24: aaload
25: invokevirtual #5; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
28: invokevirtual #6; //Method java/lang/StringBuilder.toString:()Ljava/la
ng/String;
31: astore_2
32: iinc 3, 1
35: goto 5
38: aload_2
39: areturn
}
D:\>
无论如何String pool 里面放的就是最终的字符串?
2 文章分页
发表评论
-
双色球数据抓入Mysql
2013-04-12 18:45 17341 mysql5.1 创建表 -- 创建表 id,开 ... -
从零学Java-Java简介
2013-02-28 15:06 27Java的发展史可百度获得 从零学 ... -
疑难杂症-itext 横纵混编
2013-02-26 16:20 1330POI在word处理写的能力很差,所以不适合生成复杂 ... -
itext对word处理合并单元格,处理图片,文档结构图
2013-01-18 16:29 7841效果: 代码: package com.aa ... -
Java与Javascript 最近值
2013-01-16 14:55 1770Double price = 19.0000; ... -
Java数学运算中 电脑计算和人的思维模式的差别
2012-12-13 15:31 8大多数情况下还是人的思维模式下的运算要快点。 怪状1: ... -
重构的重要性大于架构
2012-12-01 20:58 1728此文仅仅是个人理解。 架构和重构从本质上讲 ... -
Excel 参照列并单元格算法
2012-08-28 10:02 1066题目需要做的有2个功能 1 根据一个字符串数组 求出连续且相 ... -
Java基础误区
2012-08-12 01:36 9891 import java.util.Date; ... -
BigDecimal
2012-07-02 14:37 1107BigDecimal a = new BigDec ... -
朝花夕拾,Java基础回顾
2011-11-15 09:48 1134byte 在编译的时候最大可以多大?为什么? 为什么成员变量 ... -
ubuntu安装java
2011-07-04 04:23 13601:下载jdk ,比如:jdk-6u26-linux-i586 ... -
TCP和UDP
2011-07-01 16:43 1173TCP: Server端 try { Serve ... -
面试-编程-质数
2011-06-22 02:15 1144第一种算法 public static boolea ... -
Refecting in Java
2011-06-02 11:33 1171反射这个东西项目中会用到,如果我有一个Navigatio ... -
博客设计
2011-03-11 12:02 1290设计一个可以承受大访问量的博客表,Mysql数据库。 ... -
静态内部类-静态变量-非静态内部类之间的访问权限
2011-01-10 16:27 34public class Test { //注意静态 ... -
代码规范约定
2010-12-17 10:34 32处理变量,方法,类的命名之外 1必要 ... -
Java基础特殊应用
2010-11-25 16:11 1456古老的代码,java代替goto,代码没有实际的意 ... -
地址图片上传服务器
2010-11-17 14:12 561: 普通的地址图片上传,只能上传普通的地址一般是后缀jpg, ...
相关推荐
- JavaScript提供了三种基本的类型转换:Boolean(value),Number(value)和String(value),用于将值转换为相应的类型。 13. **Object对象**: - 所有JavaScript对象都继承自Object对象。Object对象的属性如`...
sum(decode(subject_name, '学问', nvl(mark, 0), 0)) 学问, sum(decode(subject_name, '学问', nvl(mark, 0), 0)), sum(decode(subject_name, '学问', nvl(mark, 0), 0)) from test group by student_id, name...
我一直认为「程序员不应该只局限于某种语言的使用者,而是应该成为语言的参与者」,点点滴滴,皆是学问,看到了、记住了,便是收获、便是进步。 在本系列博文中,作者将和大家一起分享 Java 中那些值得我们了解的...
out.print(sto01 + "俨学问" + xname + "学问为" + xcode_class + "学问状态为 "); } ``` 4. **处理中文乱码** - **编码转换**:由于表单提交的数据默认采用的是ISO-8859-1编码,而中文在该编码下无法正确...
#### 初始化学问的重要性 初始化是编程中的一个重要概念,尤其对于Java这种强类型语言来说,正确的初始化可以避免很多潜在的运行时错误。例如,未初始化的局部变量如果被使用,编译器会报错;而未正确初始化的对象...
一、Java 基础学问 1.Java 有那些基本数据类型,String是不是基本数据类型,他们有何区分。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb...
然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。比如下面这个例子: public class Puzzle { public Puzzle() { Name = Virtual member call in constructor; Solve(); } ...
内容概要:本文档收录了典型的 ...附加说明:本参考资料既可用来系统性地检验自己的知识点完整性与否同时也能够帮助读者深入体会算法思维逻辑与具体语法表达间的联系从而促进他们综合运用所学问解答复杂工程实例问题。
跳槽不仅是一种策略,更是一种学问。以下是小编整理的java程序员跳槽方法,以供大家参考。 首先,需要强调一点,跳槽并没有坏处,但是频繁的跳槽就不好。在工作的前4年,必须跳槽,而且鼓励跳槽(建议经历2---3家...
java 程序员的跳槽方法是一门学问,也是一种策略。人往高处走,这固然没有错。 但是,说来轻巧的一句话,它却包含了为什么走、什么是高、怎么走、 什么时候走,以及走了以后怎么办。 首先,跳槽对 IT 人来说绝对...
但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下...
面对各种复杂的业务场景,传递参数也是一种学问。本文将总结Mybatis中传递多个参数的4种方法,并且介绍了关于使用Mapper接口时参数传递方式。 方法1:顺序传参法 顺序传参法是Mybatis中传递多个参数的一种方法。该...