本博客用于记录本人Java的学习过程,本人才疏学浅,如有错误,请在评论区指出
本专栏其他文章:
JDK安装配置
eclipse安装与使用
Java学习笔记02
Java学习笔记03
不论是关键字还是保留字,在自己命名标识符时都应该避免使用。
用于定义数据类型的关键字:
class interface enum byte short void
int long float double char boolean
用于定义数据类型值的关键字:
true false null
用于定义流程控制的关键字:
if else swtich case default while
do for break continue return
保留字:现有Java版本尚未使用,但以后版本可能使用的字符。
byValue cast future generic inner operator
rest var goto const outer outer
凡是自己可以取名字的地方都可以叫做标识符。
注意:起名字时应该简短又具有描述性,以便于阅读代码。
概念:
使用规则:
定义格式:
数据类型 变量名 = 初始值
int i = 1;
数据类型有两种,分别是基本数据类型和引用数据类型。
基本数据类型有8种,其中又分为3种类型,数值型(包含整数类型和浮点型),字符型,布尔型
1.数值型
先来看整数类型,顾名思义就是都是整数,共有 byte、short、int、long 四种数据类型
类型 | 储存空间 | 表示范围 |
---|---|---|
byte | 1字节(8bit) | -128 ~ 127 |
short | 2字节 | -215 ~ 215-1 |
int | 4字节 | -231 ~ 231-1 |
long | 8字节 | -263 ~ 263-1 |
(1bit就是1位)
默认的整型常量是 int ,声明long型常量时后面要加“L”或“l”。
例如:
long a = 2l;
再来看看浮点型,浮点型是小数,有float、double两种
类型 | 储存空间 | 表示范围 | 精度 |
---|---|---|---|
float | 4字节 | -2128 ~ 2128 | 7位有效数字 |
double | 8字节 | -21024 ~ 21024 | 16位有效数字 |
默认的浮点型常量是 double,声明float类型常量时后面要加“F”或“f”。
例如:
float f = 2.3f;
2.字符型
char类型用来表示通常意义上的字符(2字节),包括字母、数字和特殊符号,用单引号(’’)括起来。char类型还可以进行运算。
例如:
char c = 'a';
Java种还用转义字符 ’ \ ’ 来将其后的字符转化为特殊字符。
例如:
char c1 = '\n';
下面列举常见的转义字符:
转义字符 | 含义 |
---|---|
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\ " | 双引号 |
\ ’ | 单引号 |
\ \ | 反斜线 |
3.布尔类型
boolean数据类型只允许 true 和 false 两种取值。而且不能用0和非0数值代替。
我们这里只看字符串类型 String 类型。字符串就是由多个字符组成的一个串,要用双引号("")括起来。String类型可以用 null 赋值。
创建出来的字符串放在存储区,保证每个字符串的常量只有一个,不会产生多个副本。例如:
String s0 = "abc";
String s1 = "abc";
这两个字符串的内容相同,它们实际上储存在同一处内存空间。
String类的内容可以用 + 号连接,例如:
String s3 = "He" + "ll" + "o";
在Java中,提供了一个求一个字符串的长度的方法:
字符串名.length()。
例如:
String[] s1 = "123456789";
int len = s1.length(); //长度为9
Java还提供获取字符串中指定索引号位置字符的方法:字符串名.charAt(index),
其中index为索引号
例如:
String a = "123456789";
char c1 = a.charAt(0); // c1 = 1
比较字符串的内容是否相等使用 equals() 方法来判断,不能简单的使用“ == ”来判断。
注意其返回值为 boolean 类型。下面举例说明如何使用。
String s1 = "Hello";
String s2 = "Hello";
String s3 = "hello";
boolean a = s1.equals(s2); //返回值为true
boolean b = s2.equals(s3); //返回值为false
1.自动转换
占用内存小的转化为占用内存大的可以自动转化,比如:
short s = 2;
int i = s; //自动转化
float f = 1.2L
double d = f; //自动转化
在不同的数据类型进行运算时,自动转化为容量大的类型后再进行运算(byte、short、char不能相互转化,计算时转化为int)。
例如:
byte b = 1;
short s = 2;
int i = b + s; //b 和 s 自动转化为 int 类型
float f = 1.2l;
double d = 1.2;
double sum = f + d; //f 和 d 自动转化为 double 类型
char 类型参与运算时,自动转化为整型(因为ASCLL码)。例如:
char ch = 'a';
int a = 2;
System.out.println(a+ch);
--------------------------------------------------------------------
输出结果为
99
在String类参与的运算中,都默认转化为String类型,例如:
int a = 1;
int b = 2;
String s = "hello";
System.out.println(a+b+s);
System.out.println(s+a+b);
--------------------------------------------------------------------
输出结果为
3hello
hello12
2.强制类型转换
占用内存大的数据类型转化为占用内存小的时,需要强制类型转化,例如:
int k = 1;
byte b0 = (byte)k; //需要用小括号括起来
注意:boolean类型不能转化为其他类型。
Java中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),它们都是二元运算符。
运算符 | 运算 |
---|---|
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增 |
– | 自减 |
+ | 字符串连接 |
注意:
1.特别需要注意除号(/),整形的变量相除得到的变量还是整型,会自动去除小数部分。
2.自增、自减运算符都是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算;放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1) 。
3.取余运算(%),取模运算符的右侧的负号(-)可以忽略,但是在左侧时不可忽略。
赋值运算符即“=”,是一个二元运算符(即对两个操作数进行处理),其功能是将右方操作数所含的值赋值给左方的操作数。
注意:
还有几种拓展的运算符 " += " 、"-=" 、"/=" 、" *= " 、" %= “。
这里以” +=" 为例说一下:
int a = 3;
a = a + 1;
a += 1;
//这两种运算时等价的, a += 1 就相当于 a + 1
比较运算符属于二元运算符,用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false。
运算符 | 运算 |
---|---|
== | 相等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑运算符返回值为布尔类型的表达式,操作元也必须是boolean型数据。
包括包括&&(短路与) 、&(逻辑与)、||(短路或)、|(逻辑或)、!(逻辑非)和^(逻辑异或)。
在逻辑运算符中,除了“!”是一元运算符之外,其余的都是二元运算符。
| 和 || 同理。
位运算是直接对二进制进行运算。
运算符 | 运算 | 实例 |
---|---|---|
<< | 左移 | 3<<2=12(左移两位);m << n 相当于 m * 2 n |
>> | 右移 | 3>>1= 1(右移一位);m >> n 相当于 m * 2 -2 |
>>> | 无符号右移 | 3>>>1=1即3/2=1 |
& | 与运算 | 6&3=2 |
l | 或运算 | 6l3=7 |
^ | 或与运算 | 6^3=5 |
~ | 反码 | ~6=-7 |
三元运算符是Java中唯一一个三目运算符,其操作元有三个,第一个是条件表达式,其余的是两个值,条件表达式成立时运算取第一个值,不成立时取第二个值,例如:
boolean b = 20 < 45 ? true : false;