1.goto 和 const
目前 java 中, 和 C/C++ 有点区别, 就是暂未用到 goto const 关键字. 示例如下:
- public class Hello{
- public static void main(String args[]){
- const int i =100;
- goto FINAL;
- FINAL:
- System.out.println("final");
- }
- }
编译报错:
2. 数据划分
java 中分为两大类型: 基本数据类型, 引用数据类型
3. 基本数据类型
在 java 中, 基本数据类型的变量都存在栈中
在 java 中, 布尔型是为 boolean, 和 C++ 有所不同, 而不是 bool.
在 java 中, char 是 2 字节的, 主要是 java 内部使用 unicode(utf-16) 的, 所以 java 支持中文变量名.
在 java 中, 新增了一个 byte 数据类型. 位于 - 128~127. 如下图所示.
在 java 中, 一般对于小数都使用 double.
注意: 在 java 中, 对于 boolean 赋值非 true/false 时, 是会报错的, 和 C++ 是有区别的, 示例如下:
- boolean b=5;
- System.out.println("5:"+b);
报错:
4. 引用数据类型
可以引用数组, 类, 接口等, 和基本数据不同, 这个需要通过 new 由用户来开辟空间的. 如果不赋值则为 null
比如 java 中的 String, 就是个类, 如果想用到这个类, 则需要引用类.
java 中的 String, 可以通过 + 进行字符串连接 (而 QT 中的 QString 是不能的)
示例:
- String str=new String("123"); // 通过 new String 在堆空间生成一个对象, 然后使 str 引用这个对象
- str = str +"45"+6+7.1;
- System.out.println(str); // 打印: 1234567.1
PS:String new 和直接赋值的文章参考: https://blog.csdn.net/u014082714/article/details/50087563
4.1 String 注意事项
在 java 中, String 是字符串常量, 永远都是指向的常量, 比如:
- String str=new String("123");
- str = str +"45"+6+7.1; // 实际上相当于: string str =new String("1234567.1");
为什么说 String 是字符串常量? 可以看看下面的 String 引用传递示例:
- public class Test{
- public static void main(String args[]){
- String str1=new String("123");
- String str2=str1; // 引用 str1 是 str2 的别名
- str1 +="456"; // 因为 String 是字符串常量, 所以需要重新使 str1 =new String("123456");
- // 而 str2 还是指向之前的 "123" 处
- System.out.println("str1:"+str1);
- System.out.println("str2:"+str2);
- }
- }
运行打印:
如上图所示, 可以看到修改 str1 后, str2 的值并没有跟着改变.
总结
所以, String 在更改内容时, 会不断的创建并回收之前的对象, 速度是很慢的, 适用于少数字符串操作
4.2 StringBuffer
StringBuffer 和 String 类似, 都是存储字符串, 但是 StringBuffer 存储的则是字符串变量
为什么说 StringBuffer 是字符串变量? 可以看看下面的 StringBuffer 引用传递示例:
- public class Test{
- public static void main(String args[]){
- StringBuffer a = new StringBuffer("123");
- StringBuffer b = a; // 引用 b 是 a 的别名
- b.append("456");
- System.out.println("a:"+a);
- System.out.println("b:"+b);
- }
- }
运行打印:
如上图所示, 可以看到修改 b 后, a 的值也跟着改变.
总结
字符缓冲区在进行大量操作的情况下, 使用 StringBuffer 合适.
来源: http://www.bubuko.com/infodetail-3037735.html