2.JAVA-基础语法以及String的介绍
2023-09-27 14:28:33 时间
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中分为两大类型:基本数据类型,引用数据类型
- 对于基本数据类型,在方法体内对参数进行重新赋值,不会改变原有变量的值
- 对于引用数据类型,在方法体内对参数进行重新赋值,可以改变原有变量的值,但是如果从新new分配的话,并不会改变原有变量所持有的引用
- 在方法中对于对象的属性值进行修改,则可以改变原有变量所指向对象的属性值
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
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的值也跟着改变.
总结
如果要操作少量的数据用 String;
多线程操作字符串缓冲区下操作大量数据 StringBuffer;
单线程操作字符串缓冲区下操作大量数据 StringBuilder。
相关文章
- Java基础之方法引用(JDK1.8新特性)
- Java中重载和重写的区别
- Unity WebGL 程序如何调用Java Script函数
- 面试官:Java 线程如何启动的?
- java基础---->String中的split方法的原理
- java基础---->string字面量的使用
- 详细解说Java Spring的JavaConfig注解
- Java基础-关键字-String
- Java基础-final和static的区别
- Java从入门到精通——基础篇之JSTL标签
- Java(1-15)
- 漫谈 Java 实例化类
- java基础(4)public class 和class的区别及注意事项
- 【Java 基础】字符串处理、正则表达式 及其 相关方法
- 【Java 基础】字符串 String 概述、相关方法
- Java基础——枚举
- Java 基础
- Java中 如何把Object类型强转成Map<String, String>类型
- java bigdemical比较大小
- JAVA多线程和并发基础
- java中各个类相互调用资源的原理
- java Arrays.copyOfRange使用方法
- Java 基础——System.arraycopy() 与 Arrays.copyOf() 的联系与区别
- Java 基础 (反射的应用:动态代理)
- Java 基础(Java常用类 String)
- java-基础-static
- 【蓦然回首忆Java·基础卷 Ⅲ】
- java中的多线程
- 【Java基础】Jar包结构结构分析和操作具体解释
- Java 基础面试题 第二题
- 大数据必学Java基础(九十九):DAO模式介绍
- 大数据必学Java基础(九十五):预编译语句对象
- 大数据必学Java基础(九十二):JDBC初识
- 大数据必学Java基础(五十八):Map接口讲解
- 大数据必学Java基础(五十):String类和StringBuilder类的讲解
- 大数据必学Java基础(四十八):包装类和日期类的讲解
- 大数据必学Java基础(五):第一段程序
- JAVA 入坑教程 | 基础语法
- 【Java基础系列】tob和toc的区别
- java练级第一天(细致了解数据类型)