标识符
关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iouY2INi-1616595569947)(C:\Users\86134\AppData\Roaming\Typora\typora-user-images\1616588494505.png)]
标识符
以字母(A-Z或者a-z),美元符号($)、或者下划线(_)开始
首字母之后可以是字母(A-Z或者a-z)、美元符号($)、下划线(_)或者数字
不能使用关键字作为变量名或者方法ming
**标识符是大小写敏感的 **
数据类型
java的数据类型
基本数据类型(8个)
数值类型
整数类型:byte 1个字节
short 2个字节
int 4个字节
long 8个字节 L
浮点类型:float 4个字节 F
double 8个字节
字符类型:char 2个字节 char n=‘A’ 一个
boolean类型:占1位 {true false}
引用类型
类
接口
数组
String 不是关键字,是类
String name=‘ssss’
Integer 类
什么是字节
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位的二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B(byte,字节)=8bit(位 )
- 字符:是指计算机中使用的字母、数字、字和符号
电脑32位(4GB)和64位(128GB)的区别
寻址能力
- 1bit表示1位
- 1Byte表示1个字节 1B=8b
- 1024B=1KB
- 1024KB=1M
- 1024=1G
整数、浮点数、字符、转义字符拓展
进制 二进制0b 十进制 八进制0 十六进制十六进制0x 0-9 A-F表示0-16
public class Test{
public static void main(String []args){
//整数扩展 进制 二进制0b 十进制 八进制0 十六进制十六进制0x 0-9 A-F表示0-16
int i=10;
int i2=010;//八进制0
int i3=0xF;//十六进制0x 0-9 A-F表示0-16
int i4=0b10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
//浮点数拓展
//float 有限离散 舍入误差 大约接近但不等于
//double
//最好避免用浮点数进行比较,银行业务用BiDecimal类 数学工具类
float f=0.1f;//0.1
double d=1.0/10;//0.1
System.out.prinln(f==d);
System.out.println(f);
System.out.println(d);
float d1=23123123123132123f;
float d2=d1+1;
System.out.println(d1==d2);//true
//字符型拓展
char c1='a';
char c2='中'
System.out.println(int(c1));
System.out.println(int(c2));
//所有字符本质还是数字
//编码 Unicode 2字节 2的16次幂=65536
//U0000-UFFFF
char c3='\u0061';
System.out.println(c3);//a
//转义字符拓展 \t 制表符 \n换行...
String sa=new String("Hello World");
String sb=new String("Hello World");
System.out.println(sa==sb);
String sc="Hello World";
String sd="Hello World";
System.out.println(sc==sd);
//对象 从内存分析 new一个对象地址不同 == 比较的是地址
//布尔值扩展
boolean flag=true;
if(flag){
System.out.prinln("代码精简易读");
}
}
}
10
8
31
2
false
0.1
0.1
true
97
20013
a
浅谈String st=new String()和String ==比较
public class StringDemo2 {
public static void main(String[] args) {
String str1 = "abc";//直接赋值
String str2 = "ab";
String str3 = "c";
String str4 = str2 + str3;//传递引用
String str5 = str2 + str3;
String str6 = new String("abc");//通过new赋值
String str7 = "ab"+"c";
String str8 = str2+"c";
System.out.println(str1 == str6);
System.out.println(str1 == str4);
System.out.println(str4 == str5);
System.out.println(str1 == str7);
System.out.println(str1 == str8);
}
}
————————————————
版权声明:本文为CSDN博主「Sweetie77」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43235210/article/details/96139554
总结:
String str1 = “abc”;在初始化的时候可能创建了一个对象, 也可能一个对象都没有创建
String str1 = new String(“abc”); 在初始化的时候, 因为new关键字, 所以至少在内存中创建了一个对象, 也有可能是两个对象
再回到这道题
首先明确一下 == 比较的是地址
第一行str1 == str6, 因为new就在堆上开辟了新的内存空间, 所以是false
第二行str1 == str4, 字符串拼接的时候, String会转为StringBuilder, 调用append, 所以也是false
第三行str4 == str5, 同上, false
第四行str1 == str7, 纯常量的拼接不会转化为StringBuilder, 直接在常量池中寻找是否存在已有值. 所以是true
第五行str1 == str8, 同第二行, false
总结:
字符串拼接的时候, String -> StringBuilder, 调用append方法
纯常量的拼接不会转为StringBuilder, 直接在常量池内找是否存在已有值
————————————————
版权声明:本文为CSDN博主「Sweetie77」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43235210/article/details/96139554