文章目录
代码注释
-
// :
// 这是第一种注释,可以单独一行也可以在代码末尾
-
/**/:
/* 这是第二种注释,可以不换行 可以多行 */
关键字
有特殊含义的、被保留的、不能随意使用的字符
关键字特点
- 完全小写的字母
- 编译器中有特殊颜色
标识符
- 标识符:在程序中,用户自定义的内容。如:类的名字/方法的名字、变量的名字等等
命名规则
硬性要求
- 可以包含英文字母,数字,$,和下划线
- 不能以数字开头
- 不能是关键字
软性建议
- 类名:大驼峰式(HelloWorld)
- 变量名:小驼峰式(helloWorld)
- 方法名:小驼峰式(helloWorldPrint)
常量
在程序运行期间,固定不变的值
常量的分类
- 字符串常量:用双引号引起来的部分叫字符串常量,如"hello"
- 整型常量:直接写整数,如 23
- 浮点数常量:直接写小数,有小数点,如23.4
- 字符常量:用单引号引起来的单个字符,必须有内容不能空,如’h’,‘9’,‘中’
- 布尔常量:true,false
- 空常量:null 代表没有任何数据,但是不能把null写入代码
常量相关代码
public class Demo01Const{
public static void main(String[] args){
/*输出字符串常量*/
System.out.println("ABC");
System.out.println("");
System.out.println("9");
/*输出整型常量*/
System.out.println(11);
System.out.println(-11);
/*输出浮点型常量*/
System.out.println(2.3);
/*输出字符常量*/
System.out.println('A');
/*输出布尔常量*/
System.out.println(true);
System.out.println(false);
/*输出空常量*/
System.out.println();
}
}
数据类型
数据类型分类
基本数据类型(四类八种)
整型
byte short int long
浮点型
float double
字符型
char
布尔型
boolean
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1B | -128~127 |
短整型 | short | 2B | -32768~32567 |
整型 | int(默认) | 4B | -231~231-1 |
长整型 | long | 8B | -263~263-1 |
单精度浮点数 | float | 4B | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8B | 4.9E-324~1.7977E+308 |
字符型 | char | 2B | 0~65535 |
布尔类型 | boolean | 1B | true false |
字符串不是基本类型,而是引用类型
浮点型可能只是一个近似值
数据范围与字节数不一定相关,float比long的数据范围更广泛,但float更节省空间
浮点数默认为double类型,如果使用float需要加后缀F
整数默认为int类型,如果使用long需要加后缀L
-
引用数据类型
类
接口
数组
变量
程序运行期间,内容可以发生改变的量
使用方法
数据类型 变量名称; //创建一个变量
变量名称 = 数据值; //赋值
数据类型 变量名称 = 数据值; //在创建变量同时进行赋值
代码示例
// variable 可变的(变量)
public class Demo02Variable{
public static void main(String[] args){
float num1; // 定义一个float型变量num1
num1 = 10.2F; // 给num1赋值10.2
System.out.println(num1); // 输出num1
}
}
注意事项
-
定义变量时,变量名称不可重复
-
定义long 和float时,字母后缀L和F不能省略
-
赋值必须在数据类型的范围内
-
变量需要先定义,后使用
-
变量使用不能超过作用域的范围
作用域
从变量定义的哪一行开始,一直到直接所属的大括号结束位置 -
可以通过一个语句来创建多个变量,但一般情况不推荐
int a, b, c;
数据类型转换
自动类型转换
- 将
取值范围小的
自动转换为取值范围大的
- 特点:代码不需要进行特殊处理,自动完成
- 规则:数据范围从小到大
public static void main(String[] args){
System.out.println(1024); //输出整数1024,默认为int类型
System.out.println(3.14); //输出浮点数3.14,默认为double类型
long num1 = 100; //没有L后缀,100默认为int类型,但是num1为long类型,int->long,从小到大符合规则,自动进行数据转换了
System.out.println(num1);
}
强制类型转换
-
特点:代码需要进行特殊处理,不能自动完成
-
格式:
范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
int num = (int)100L; //100L为long类型,范围比int大,使用强制类型转换,将100L转换成int型
强制类型转换注意事项
-
强制类型转换一般不推荐使用,因为有可能发精度损失、数据溢出
-
精度损失:丢失超出范围的部分,小数转整数会丢失小数部分
-
数据溢出:范围小的类型装不下原类型的数据,输出错误
public static void main(String[] args){ int num = (int)100L; //强制类型转换 System.out.println(num); int num1 = (int)1000000000000L; //long类型存储数据超出int类型数据范围发生数据溢出 System.out.println(num1); int num2 = (int)3.678; //发生数据精度丢失,输出结果丢弃小数部分 System.out.println(num2); }
-
-
byte/short/char 三种类型可以发生数学运算,例如“+”
-
在运算时都会首先提升为int类型,char类型运算按ASCII码值运算
byte num3 = 1; short num4 = 2; int num5 = num3 + num4; //byte,short,char计算时自动提升为int类型,char根据ASCII码进行行算 System.out.println(num5);
-
-
boolean类型不能发生强制类型转换
ASCII码
American Standard Code for Information Interchange美国标准编码信息交换
因为计算机中,所有指令,字符,操作等最终都会转化为二进制数字,所以,用ASCII码来表示字符所真正存储时所对应的十进制数字,来实现相关的转换
记忆:字符0–>48 a–>97 A–>65
public class Demo03DataTypeChar{
public static void main(String[] args){
char zifu1 = '1';
System.out.println(zifu1+0);
}
}
// 输出结果为49.因为字符1对应的ASCII码为48,在进行char与int类型的加法时,遵循自动类型转换,范围小的转换为范围大的,字符1根据ASCII码转换为整数48再与整数1相加得49
Unicode码
万国码
也是数字和符号的对应关系,开头0-127部分与ASCII完全一样,但是从128开始包含有更多文字,甚至包含emoj表情:)
输入输出中文就需要使用Unicode编码
运算符
operator 运算符
定义
进行特定操作的符号。例如:“+”
算数运算符
算术运算符 | 具体含义 |
---|---|
+ | 加法运算,字符串连接运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算,两个数字相除取余数 |
++ -- | 自增自减运算 |
Java中,运算时有不同类型的数据,结果会是数据类型范围较大的类型,如果相同数据类型进行运算,结果还是该类型
python中除法运算默认为float
C中除法运算取决于参与运算的数字类型
public class Demo04Operator{
public static void main(String[] args){
// 两个常量之间可以进行数学运算
System.out.println(20 + 30 );
// 两个变量之间也可以进行数学运算
int a = 20;
int b = 30;
System.out.println(a-b);
// 变量和常量之间可以混合使用
System.out.println(a*10);
}
}
加法相关
-
对于数字来说,加法就是数学运算相加。
-
对于字符char类型而言,在计算前会被提升为int,然后再计算。因为int类型数据范围要比char大,所以结果也是int
-
对于字符串String(首字母大写,并不是关键字),加号代表字符串连接,如果和int相加,由于String数据范围更大,所以结果会是字符串。
public class Demo05Plus{
public static void main(String[] args){
String str1 = "Hello";
System.out.println(str1);
System.out.println(str1 + "World");
System.out.println(str1 + 20);
}
}
自增自减
-
注意++的前后位置,++在前先自加再运算,++在后先取值再自加
public class Demo06DoublePlus{ public static void main(String[] args){ int num1 = 10; System.out.println(num1); System.out.println(num1++); //结果仍然为10,但num1的值自加1 System.out.println(num1); System.out.println(++num1); //结果为12,num1的值自加1 } }
赋值运算符
=
将右侧的值赋给左侧
+=
自身加上右侧的值
-=
自身减去右侧的值
*=
自身乘右侧的值
/=
自身除以右侧的值
%=
自身模右侧的值
public class Demo07Assignment{
public static void main(String[] args){
int a = 10;
a *= 2;
System.out.println(a);
}
}
比较运算符
==
相等
>
大于
<
小于
>=
大于等于
<=
小于等于
!=
不等于
-
比较运算的结果为Boolean类型,结果为
true
或false
public class Demo08Compare{ public static void main(String[] args){ int a = 10; int b = 20; System.out.println(a > b); //输出结果为false } }
逻辑运算符
&&
与:二者全真才是真
||
或:有一个真就是真
!
非(取反) :真变假,假变真
public class Demo09Logic{
public static void main(String[] args){
System.out.println(10 == 10);
}
}
三元运算符
-
一元运算符:仅需一个数据就可以进行操作的运算符
例如:
!
,++
,--
-
二元运算符:需要两个数据才能进行操作
例如:
=
,+
,-
,*
,/
,%
,&&
,||
-
三元运算符:需要三个数据才能进行的操作
语法格式:
数据类型 变量名 = 条件判断 ? a : b
如果条件判断为true,取a,如果判断为false,取b
问号后面的两个数据的类型必须和变量名一致
public class Demo10Operator{ public static void main(String[] args){ int max, a = 10, b = 9; max = a > b? a : b; System.out.println(max); } }