一、标识符
1.1 概述
-
在Java语言中,用来给类、方法、变量、常量、包等内容命名的字符序列
- 用来取名字的一个字符串
1.2 标识符组成
- 字母
- 数字
- 下划线_
- 美元符$
1.3 命名规则
统一规则
-
见名知意
- 看到名字大概能猜到是什么作用
name xingMing // 姓名 age nianLing // 年龄 address diZhi // 地址 info xinXi // 信息 balance yuE // 余额 -
不能使用数字开头
- 100num ×
-
不能使用关键字和保留字
类名
-
class关键字后面的名字
- HelloWorld、Demo01...
-
所有单词首字母大写
- 大驼峰命名法
方法【函数】名
-
方法表示一个功能,一般是动词
- main、getAge、setName、charge...
-
第一个单词全部小写,后面使用单词首字母大写
- 小驼峰命名法
变量名
-
表示一个属性,一般是名词
- name、age、address、money、myAccount、ageOfYou
-
第一个单词全部小写,后面使用单词首字母大写
- 小驼峰命名法
常量名
-
固定不变的数据
- 祖国、公司名、祖籍
- COUNTRY、COMPANY_NAME、ORIGINAL_FAMILY_HOME
-
单词中的所有字母大写,多个单词使用下划线连接
包名
-
公司域名倒着书写
- com.company.项目名.模块名
- com.baidu.项目名.模块名
- com.jd.项目名.模块名
1.4 标识符命名练习
-
类名
电脑、水杯、用户、人、学生、桌子
Computer、WaterCup、User、Person、Student、Desk
-
方法
取钱、存钱、充电、玩游戏、学习、监听工作状态
takeMoney、saveMoney、charge、playGame、study、mnitorWorkingStatus
-
变量
姓名、地址、个人信息、是否会员、用户状态、身份证号码
name、address、info、isMember、userStatus、id
-
常量
祖国、公司名、祖籍
COUNTRY、COMPANY_NAME、ORIGINAL_FAMILY_HOME
二、关键字
2.1 概述
-
在Java中,被赋予了特殊含义的标识符
- class、public、static、void、、、
-
已经被Java语言占用,开发者不能再次使用
2.2 关键字大全
三、变量
3.1 概述
- 变量是在内存中开辟的一片空间,用来存储对应类型的数据
3.2 变量入门案例
class Demo01 {
public static void main(String[] args) {
/*
年龄
整数 年龄 = 26;
体重
小数 体重 = 67.5;
性别
字符 性别 = '男';
是否毕业
布尔 是否毕业 = 真;
*/
// 变量年龄,类型是整数,数据是26
int age = 26;
// 变量体重,类型是小数【浮点型】,数据是67.5
double weight = 67.5;
// 变量性别,类型是字符型【只有一个文字】
char gender = '男';
// 变量是否毕业,类型是布尔,数据是true/false
boolean isGraduated = true;
System.out.println("Hello World!");
}
}
3.3 创建变量
先声明,后赋值
- 先开辟空间,后面再去存入数据
int a; // 开辟空间
// 十万行代码飘过...
a = 100; // 存入数据
声明的同时赋值
- 开辟空间的时候直接存入数据
int b = 200;
一次创建多个变量【使用较少】
- 同时开辟多个相同类型的空间
int a,b,c;
int x=10,y=20,z=30;
四、数据类型
4.1 概述
- 根据数据的种类和大小,把数据进行分类的操作
- Java是强类型编程语言,每一条数据都有其对应的类型
4.2 分类
基本类型
- 整数
- 小数
- 字符
- 布尔
引用类型
-
除了基本类型,剩下的全部是引用类型
- String
- System
- Object
- 数组
- ... ...
4.3 整数类型
-
不同大小的整数应该分配对应大小的空间
- 节省空间
- 方便管理
-
如果一个整数没有声明类型,默认的类型是int
- -2147483648 ~ 2147483647
| 类型 | 名称 | 大小 | 范围 |
|---|---|---|---|
| byte | 字节型 | 1字节 | -128~127 |
| short | 短整型 | 2字节 | -32768~32767 |
| int | 整型 | 4字节 | -2^31 ~ 2^31-1 |
| long | 长整型 | 8字节 | -2^63 ~ 2^63-1 |
class Demo04 {
public static void main(String[] args) {
byte b = 100;
System.out.println(b);
short s = 32000;
System.out.println(s);
int i = 10000;
System.out.println(i);
// 过大的整数需要使用L标记
long l = 12345678900L;
System.out.println(l);
}
}
4.4 小数类型【浮点型】
- 小数也有长短之分,不同长度的小数占有的空间也不相同
| 类型 | 名称 | 大小 |
|---|---|---|
| float | 单精度浮点型 | 4字节 |
| double | 双精度浮点型 | 8字节 |
-
小数类型默认是double
- 因为小数的位数增加很容易:10.0 / 3 = 3.3333333.....
class Demo05 {
public static void main(String[] args) {
// 创建双精度小数
double d = 3.1415926;
System.out.println(d);
// 创建单精度小数,小数默认的类型是double,float类型的变量需要使用F标记
float f = 3.1415926F;
System.out.println(f);
// 小数有可能不准确
System.out.println(10.0 / 3);
}
}
4.5 布尔型
-
程序中需要大量的逻辑、关系判定,这些判定的结果是真或者假
-
编程语言中新增了布尔类型,用来表示上述结果
-
布尔类型只有两个数据
- true
- false
| 类型 | 名称 | 大小 | 范围 |
|---|---|---|---|
| boolean | 布尔型 | true / false |
class Demo06 {
public static void main(String[] args) {
// 创建boolean类型变量b
boolean b = true;
System.out.println(b);
// 修改变量b中的数据
b = false;
System.out.println(b);
// 创建boolean类型变量bb
boolean bb = false;
System.out.println(bb);
}
}
4.6 字符型
- 用来表示单个字符【必须是一个字符,不能多或者少】
| 类型 | 名称 | 大小 | 范围 |
|---|---|---|---|
| char | 字符型 | 2字节 | 0~65535 |
class Demo08 {
public static void main(String[] args) {
char c01 = 'A';
System.out.println(c01);
c01 = '张';
System.out.println(c01);
c01 = '&';
System.out.println(c01);
// 字符使用单引号包裹,必须是一个字符
c01 = ' ';
System.out.println(c01);
}
}
// 使用0~65535之间的数字赋值
char c02 = 97;
System.out.println(c02);
c02 = 98;
System.out.println(c02);
c02 = 99;
System.out.println(c02);
c02 = 100;
System.out.println(c02);
// 使用十六进制数字赋值
char c03 = '\u0061';
System.out.println(c03);
char c04 = 'A'; //c04=='A', 'A'==65
System.out.println(c04);
System.out.println(c04 + 1); // 65 + 1 = 66
System.out.println('杜' + 1 - 1);
char c05 = 26460;
System.out.println(c05);
System.out.println((int)'杜'); // 强制类型转换
4.7 转义字符
- 在Java语言中有些符号有特殊含义,有些字符需要被赋予特殊含义
- 可以使用\X的方式进行转义
class Demo09{
public static void main(String[] args) {
/*
'【单引号】在Java中石油特殊含义的,表示字符的开始或者结束
如果需要使用单引号,可以使用'De方式进行转义
转义:
如果没有特殊作用,添加特殊作用
如果有特殊作用,去除特殊作用
*/
char c01 = ''';
System.out.println(c01);
String s = """;
System.out.println(s);
char c02 = '\';
System.out.println(c01);
System.out.println("HelloWorld");
System.out.println("Hello World");
System.out.println("Hello\tWorld"); // \t表示按下一次制表符【约定】,t==tab
System.out.println("Hello\nWorld"); // \n表示按下一次回车键,n==newLine
}
}
4.8 类型转换
- 在Java中,不同类型的数据是可以互相转换的
- 要求类型必须兼容
自动转换
- 小的数据放入大的空间
- 天生安全
强制转换
- 大的数据放入小的空间
- 有风险
class Demo10{
public static void main(String[] args) {
// 创建1字节的空间,存储数字100
byte b = 100;
// 把1字节的数据放入4字节的空间,天生安全
int i = b;
// 创建4字节空间,存储数据10000
int ii = 10000;
// 把4字节的空间放入1字节,有风险
/*
如果int的数据比较小【-128~127】,能放得下
如果int的数据比较大【超过127或者小于-128】,只能容纳一部分
*/
byte bb = (byte)ii;
System.out.println(bb);
}
}
五、进制
5.1 概述
- 进制也就是进位计数制,是人为定义的带进位的计数方法。
- 135 为什么是一百三十五?
135 = 100 + 30 + 5
= 1 * 10^2 + 3 * 10^1 + 5 * 10^0
3333 = 3000 + 300 + 30 + 3
= 3 * 10^3 + 3 * 10^2 + 3 * 10^1 + 3 * 10^0
5.2 进制分类
-
二进制
0~1 -
八进制
-
十进制
-
十六进制
0~9 a~f a=10 b=11 c=12 d=13 e=14 f=15
5.3 二进制
-
逢二进一的一种计数制度
-
源自计算机元件的特征
- 有电和无电
- 有磁和无磁
六、运算符
6.1 概述
-
在数据处理过程中参与运算的符号
+ - * / = -
算术运算符
-
关系运算符
-
赋值运算符
-
逻辑运算符
-
三元运算符
-
位运算符
6.2 算术运算符
+ 两个数据相加
- 两个数据相减
* 两个数据相乘
/ 两个数据相除
% 两个数据整除之后的余数 10 % 3 = 1==》 10 / 3 = 3...1
++ 自增一个数值
-- 自减一个数值
class Demo11{
public static void main(String[] args) {
int a = 15;
int b = 10;
/*
"a = " 是纯文字,固定的内容
+ 拼接,Java中拼接字符串使用这个符号
a 变量a
*/
System.out.println("a = " + a);
System.out.println("a+b = " + a+b); // 拼接字符串
System.out.println("a+b = " + (a+b)); // 拼接加法运算的结果
System.out.println("a-b = " + (a-b));
System.out.println("a*b = " + (a*b));
System.out.println("a/b = " + (a/b)); // 整数和整数运算的结果还是整数
System.out.println("a%b = " + (a%b)); // 整除之后的余数:15 / 10 = 1...5
a++;
System.out.println("a = " + a);
a++;
System.out.println("a = " + a);
a++;
System.out.println("a = " + a);
a++;
System.out.println("a = " + a);
int x = 10;
int y = 10;
int num01 = x++; // x先把自己的数值赋值给num01,自己再完成自增【经常使用】
int num02 = ++y; // y想要把数值赋值给num02,需要先经过++的操作【几乎没有使用场景】
// x和y都执行了一次自增,数值都会增加1
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("num01 = " + num01);
System.out.println("num02 = " + num02);
// 张三说:""
}
}
6.3 赋值运算符
=
+=
-=
*=
/=
%=
class Demo12 {
public static void main(String[] args) {
int a = 20;
int b = 15;
a += b; // a = a + b, a = 20 + 15 = 35
System.out.println("a = " + a);
a -= b; // a = a - b = 35 - 15 = 20
System.out.println("a = " + a);
a *= b; // a = a * b = 20 * 15 = 300
System.out.println("a = " + a);
a /= b; // a = a / b = 300 / 15 = 20
System.out.println("a = " + a);
a %= b; // a = a % b = 20 % 15 = 5
System.out.println("a = " + a);
}
}
6.4 关系运算符
- 比较是否成立,返回布尔类型的结果
>
>=
<
<=
==
!=
class Demo13{
public static void main(String[] args) {
// 关系运算符得到的结果是布尔类型
int a = 20;
int b = 15;
System.out.println("a>b ? " + (a>b));
System.out.println("a>=b ? " + (a>=b));
System.out.println("a<b ? " + (a<b));
System.out.println("a<=b ? " + (a<=b));
System.out.println("a==b ? " + (a==b));
System.out.println("a!=b ? " + (a!=b));
}
}
6.5逻辑运算符
- 判定逻辑是否成立
你和你的同桌都是成年人?
你或者你的同桌成年啦?
package com.shine.operator;
public class Demo02 {
public static void main(String[] args) {
/**
* 逻辑运算符
* & 逻辑与
* && 短路与
* 进行逻辑判定,判定A条件和B条件是同时成立
* 只要表达式中有任何一个false出现,结果就是false
* 使用短路与&&能提升判定的效率
* A && B
* true && true ==> true
* true && false ==> false
* false && true ==> false
* false && false ==> false
*
* | 逻辑或
* || 短路或
* A || B
* 进行逻辑判定,判定A条件或者B提交是否成立
* 只有表达式中有任何一个true,结果就是true
* 使用短路或能提升判定效率
* true || true ==> true
* true || false ==> true
* false || true ==> true
* false || false ==> false
*/
/**
* 你的你的同桌身高都超过180
* 你的身高 > 180 并且 同桌身高 > 180
*/
int yourHeight = 188;
int hisHeight = 178;
System.out.println((yourHeight > 180) && (hisHeight > 180));
/**
* 你或者你的同桌身高超过180
* 你的身高 > 180 或者 同桌身高 > 180
*/
System.out.println((yourHeight > 180) || (hisHeight > 180));
}
}
6.6 三元运算符
- 有三个元素参与的运算,得到一个结果
package com.shine.operator;
public class Demo04 {
public static void main(String[] args) {
/**
* 三元运算符
布尔表达式:结果为布尔值的表达式【判定】
* 布尔表达式 ? 结果01 : 结果02;
* 布尔表达式结果为true,得到结果01
* 布尔表达式结果为false,得到结果02
*/
// 比较a和b哪个大?
int a = 83;
int b = 55;
String result = a > b ? "a比较大":"b比较大";
System.out.println(result);
// 获取a和b中较大的数据
int max = a>b ? a:b;
System.out.println(max);
}
}
6.7 位运算符
- 使用二进制进行运算
package com.shine.operator;
public class Demo05 {
public static void main(String[] args) {
System.out.println(10 + 2);
System.out.println(10 - 2);
System.out.println(10 * 2);
System.out.println(10 / 2);
System.out.println(10 % 2);
/**
* 0000 1010
* & 0000 0010
* -----------
* 0000 0010 = 2
*/
System.out.println(10 & 2);
/**
* 0000 1010
* | 0000 0010
* -----------
* 0000 1010 = 10
*/
System.out.println(10 | 2);
/**
* 异或
* 0000 1010
* ^ 0000 0010
* -----------
* 0000 1000 = 8
*/
System.out.println(10 ^ 2);
// 左移和右移
System.out.println(10 >> 1);
System.out.println(10 >> 2);
System.out.println(10 << 1);
System.out.println(10 << 2);
}
}