Java基础笔记—第一篇(数据类型、流程控制)

Java基础笔记—第一篇(数据类型、流程控制)

1. Java数据类型
基本数据类型:boolean(1)、byte(8)、char(16)、short(16)、int(32)、long(64)、float(32)、 double(64)。
引用数据类型:类(String/Object/Date… )、接口、数组。

基本数据类型在声明时就分配了空间,引用类型首先只分配了引用空间,数据空间并没有分配,必须通过实例化开辟数据空间,才可以对变量所指向的对象进行访问。

2. String、StringBuffer、StringBuilder区别

  • 首先从运行速度或执行速度区别:

StringBuiler > StringBuffer > String

String之所以速度慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后,该对象是不会更改的,而其他两个是变量都是可以修改的。

示例1:
String s1 = "hello";
System.out.println(s1);
s1 = s1 + "world";
System.out.println(s1);

代码首先输出“hello”,然后输出“helloworld”,看上去好像是被修改了一样,其实只是假象而已。JVM处理过程:首先创建了一个String对象s1,并将“hello“赋值给s1,然后在第三行中又创建了新的String对象s1,并将原来s1的值和”world“拼接起来赋值给新的s1,而原来的s1就会被JVM的垃圾回收机制(GC)回收,所以实际上s1的值并没有被修改,也就是String对象一旦被创建就不会被修改,总而言之,Java对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。

示例2:
String s1 = "hello" + "world";
StringBuilder sb = new StringBuilder().append("hello").append("world");
System.out.println(s1);
System.out.println(sb);

这样输出的结果String就会比StringBuilder快很多,但是若字符串是来自于其他String对象的话,JVM就会像上面一样,不断的回收、创建,速度就会很慢。

  • 其次是线程安全上面

在线程安全上面,StringBuilder是线程不安全的,StringBuffer是线程安全的。

如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法带有synchronized关键字,所以可以保证线程是安全的。但是StringBuilder的方法中没有该关键字。

  • 总结

String—适用少量字符串操作的情况
StringBuilder—适用于单个线程下在字符串缓冲区进行大量操作的情况
StringBuffer—适用于多线程下在字符串缓冲区进行大量操作的情况

3. 逻辑运算符

  • 赋值运算符:= 、+= 、 -= 、 *= 、%= 、 /=

  • 算术运算符:

    二元运算符:+ 、 - 、 * 、/ 、 %
    一元运算符:++ 、 –

  • 关系运算符:== 、 != 、 < 、<= 、>= 、>

  • 条件运算符:条件表达式?表达式1:表达式2

  • 逻辑运算符:~(按位非)、&(按位与)、|(按位或)、^(按位异或)

4. switch流程控制语句

 switch(expr){
 		case value1 : statement;
 			break;
 		case value2:statement;
 			break;
 		default:statement;
 			break;
 }
  • expr必须是与int类型兼容类型,即为byte、short、char、int、Enum类型中一种,jdk1.7之后String类型也可以使用。使用过程中若出现cannot switch on value of type String for source level below 1.7 Only convertible int values or enum variables are permitted(jdk版本太低,不支持)。
  • value1和value2必须是常量且与int类型兼容的类型,且值不同。
  • switch语句中只能有一个default子句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值