数据类型
数据类型决定了数据的存储方式和运算方式的不同,Java中的数据类型分为两大类,分别是基本数据类型和引用数据类型,具体详见下图:
基本类型:变量存在栈里面(指向这里),在引用时直接引用到值
double x = 0.3;
double y = x;//y = 0.3
引用类型:变量存在堆里面(指向那里),引用时只是指向对象
person p = new person();
person p2 = p;//p2和p都是指向同一个对象
标识符
名字就是标识符:任何一个变量、常量、方法、对象、类都需要名字。标识符需要满足一定的规定,包括:
1.可以由字母、数字、下划线(半角符)、美元符号组合而成;
2.必须以字母、下划线或者美元符号开头,不能用数字开头。
注意:Java是大小写敏感的语言按照惯例,通常类名首字母大写;其余包名、方法名、变量名都是小写,少用下划线。变量常量都建议是随写随用,不用像C一样全部放最前面,可读性差。
运算符
分类 | 符号 | 用法 |
---|---|---|
算数运算符 | +,-,*,/ | 加减乘除法 |
算数运算符 | % | 取余数 |
算数运算符 | ++ | 自加1 |
算数运算符 | - - | 自减1 |
关系运算符 | >,<,>=,<= | 大于、小于、大于等于、小于等于 |
关系运算符 | ==,!= | 判断等于和不等于,返回布尔类型值 |
逻辑运算符 | !,&,|,^,&&,‖ | 逻辑非、与、或、异或、短路与、短路或 |
位运算符 | &,|,^,~ | 按位与、或、异或、求反 |
位运算符 | >>,<<,>>> | 左移、右移、无符号右移。例如:a< |
赋值运算 | =,+=,-=,*=,/= | 赋值运算,a+=b表示a=a+b,其余类似 |
字符串连接运算符 | + | 如果连接的两端并非都是字符串,会自动转换为字符串 |
三目运算符 | ? | b = a>0?a:-a,表示的是如果a>0,就取a,否则取-a |
代码注释符号 | // | 用于单行注释 |
代码注释符号 | /*…/ | 指定位置注释,第二个斜线前应该有*号 |
代码注释符号 | /**…*/ | 文档注释,在生成文档时特定的格式显示 |
1.++的使用问题:请问b等于多少呢?
int a = 2;
int b = a++ + ++a ;
答:实际运行结果是6,但是不知其原理。
2.bool类型:请问布尔的true和false是什么样存储识别的呢?
答:其实false是以整数0的形式识别的,true是整数。
3.关于位移运算符的强制转换:b是什么类型的数据?
short a = 2;
b = a<<2;
答:b是int数据类型。位移运算符,会将低于int的数据类型首先转为int,才进行位移操作,数据类型的排序为:byte、short、char、int、long。
4.关于运算符的强制转换:b和d是什么类型?
short a = 2;
long c = 3;
long b = a+c;
int d = (int)c
答:b为long运算符,在进行运算过程中,会将低级的数据类型转换为高级的数据类型再进行运算。其实d是固定的int类型,但是转换过程中需要注意的是,将long的c转换为int的d,需要加上(int)的这种写法进行强制类型转换,如果需要转换成其他类型,也适用,例如转为float,则为(float)。
数组
1.数组的声明:
整数数组:int []a或者a[]
浮点数组:double []b 或者b[]
需要注意的是,如果方括号在前,后跟多个变量时,则表示多个数组;如果方括号在后,后面再跟变量,则只有一个数组,例如:
int []a,b,c;//表示abc三个数组
int a[],b,c;//表示a数组,bc整数
Java中的数组声明是引用类型的数据,所以他是在堆空间中的,所以这里的a只表示指向,所以不能像C语言一样直接写int a[5];而是用下面的方式进行空间分配。
int a[5];//非法
int []a = new int[5];//java用语
数组空间一经分配,那么数组中的每个元素也被按照成员变量同样的方式被隐式初始化,数值类型会被初始化为0,引用类型会被初始化为null。也就是说,上面的代码片中的a的五个数据都被初始化为0。
2.数组的引用:
与C语言相似,都是利用 [下标] 的方式进行调用,下标是从0开始的,上面声明的数组a的下标就是0~4。另外在Java中为数组增加了length方法获取数组的长度。
int []a = new int[5];//java用语
int b = a.length();//或者数组长度
注意:这里的长度是指数组有多少元素,所以这里的b=5,而不是等于4。
3.Java中遍历数组的方式:只读式
int []test = new int[5];//java用语
for(int x :test)
{
system.out.println(x);//这里的x将遍历整个Test数组
}
如果需要对数组进行读写,那么需要利用正常的for循环进行。因为与C语言一样,此处不做赘述,如需了解,可以私聊。
4.数组的指定拷贝:
使用System.arraycopy()方法进行,这个方法共有五个参数,使用规范如下:
System.arraycopy(原数组, 原数组起始位置, 目的数组, 目的数组起始位置, 拷贝的数据长度);
如果你对Java感兴趣,可以参考前面几期日记,附上链接:
Java编程基础认知:Java学习日记1——基础认知
Java面向对象编程认识:Java学习日记2——面向对象编程认知
Java程序的基本结构认识:Java学习日记3——程序类型与构成认知
Java的输入输出方法总结:Java学习日记4——Java输入输出方法总结