002-基础语法
文章目录
标识符【掌握】
概述
- 在java语言中用来给类、方法、变量等内容命名的一个字符序列
组成
- 字母
- 数字
- _[下划线]
- $[美元符]
命名规则
- 见名知意
- 不能占用关键字和保留字
类名
- 类的名字,class后面的那个字符串
- 每个单词的首字母大写
- HelloWorld
- JdbcUtil
- UserInfo
- BalanceAccount
- ObjectOutputStream
- 大驼峰
方法名
- 小驼峰命名法
- 第一个单词字母小写,从第二个单词开始,首字母大写
- getAge
- setName
- indexOf
变量
- 小驼峰命名法
- 第一个单词字母小写,从第二个单词开始,首字母大写
- myName
- yourAge
常量
- 所有单词中的字母全部大写
- 多个单词使用下划线连接
- JAVA_HOME
- COMPANY_NAME
包名
- 存储代码文件夹的名字
- 公司域名倒着书写
- com.baidu.项目名字
- com.alibaba.项目名字.模块名字
随堂练习
- 类名
- 电脑、手机、轿车、拖拉机、水杯、银行账号、平头哥
- 方法名
- 动词、设置密码、登录、注册、验证是否存在、获取用户信息
- 变量
- 姓名、年龄、身高、体重、性别、备注、描述信息
关键字
概述
- 已经被Java语言赋予了特殊含义的标识符,开发者不能再次使用
关键字/保留字大全
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
变量【掌握】
概述
- 变量是在内存中开辟的一片空间,用来存储对应类型的数据
创建变量
- 变量三要素
- 数据类型
- 变量名
- 数据
- 同一个作用域中,变量的名字不能重复
先声明后赋值
int a;
a = 100;
声明的同时赋值
int b = 200;
一次创建多个变量
int x,y,z;
int m=100,n=200;
使用变量
- 通过变量的名字访问变量中的数据
class Demo05{
public static void main(String[] args) {
/*
先声明,后赋值
数据类型 变量名;
变量名 = 数据;
*/
// 开辟int类型的变量num
int num;
// 把100存入num
num = 100;
System.out.println(num);
// 再次把200存入num,覆盖之前的内容
num = 200;
System.out.println(num);
// 声明变量的同时赋值
int number = 300;
System.out.println(number);
// 声明int类型变量xyz,没有赋值
int x,y,z;
x = 111;
// 方法中的变量使用之前必须先赋值,否则报错
System.out.println(x);
// 一次声明多个变量并赋值,使用逗号隔开
int a=10,b=20,c=30;
System.out.println(a);
int m=30,n;
// 通过变量的名字获取变量中的数据
System.out.println(m);
}
}
进制【熟悉】
概述
- 进制也就是进位计数制,是人为定义的带进位的计数方法。
- 对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。
进制分类
二进制
-
逢二进一
0,1
八进制
-
逢八进一
-
使用一个八进制位表示3个二进制
0~7
000 ~ 111 0 ~ 7
十进制
- 逢十进一
- 生活中使用最为广泛的进制
十六进制
-
逢十六进一【逢G进一】
-
使用一个十六进制位表示四个二进制
09,af
字母不区分大小写
二进制和十进制转换
235
200 + 30 + 5
2*100 + 3*10 + 5*1
2*10^2 + 3*10^1 + 5*10^0
0000 1010 ==> 10
1*2^3 + 1*2^1 = 10
- 二进制==》十进制
0000 0000 ~ 1111 1111
128 64 32 16 8 4 2 1
0000 1110 == 14
0000 0111 == 7
0010 0010 == 34
0011 0011 == 51
- 十进制 ==》 二进制
0000 0000 ~ 1111 1111
128 64 32 16 8 4 2 1
66 == 0100 0010
55 == 0011 0111
46 == 0010 1110
88 == 0101 1000
扩展
- 原码
- 反码
- 补码
- 移码
数据类型【掌握】
概述
- Java是一门强类型语言,Java给所有的数据预设了数据类型
分类
基本类型
- 整型
- 浮点型
- 布尔型
- 字符型
引用类型
- 除了基本类型,剩下全是引用类型
- String
- Object
- 数组
- 集合
- … …
整数类型
- 整数默认的类型是int
类型 | 名称 | 大小 | 范围 |
---|---|---|---|
byte | 字节型 | 1字节 | |
short | 短整型 | 2字节 | |
int | 整型 | 4字节 | |
long | 长整型 | 8字节 |
class Demo06 {
public static void main(String[] args) {
/*
整数
byte 1字节 -128~127
short 2字节 -32768~32767
int 4字节 -2147483648~2147483647
long 8字节 不详
*/
byte b = 100;
System.out.println("byte b = " + b);
// b = 200; // 超出范围报错
System.out.println("byte b = " + b);
short s = 10000;
System.out.println("short s = " + s);
// s = 100000;
System.out.println("short s = " + s);
int i = 1234567890;
System.out.println("int i = " + i);
long l = 112233445566L; // 如果是过大的整数给long变量赋值,需要加上L标记
System.out.println("long l = " + l);
}
}
- 定义一个人的数据
- 姓名、身高、年龄、性别、联系方式,输出这些信息
- 补全整型中数据的范围
小数类型
- 默认的是double类型
- 如果声明float类型变量需要使用f标记
类型 | 名称 | 大小 | 范围 |
---|---|---|---|
float | 单精度浮点型 | 4字节 | |
double | 双精度浮点型 | 8字节 |
class Demo08{
public static void main(String[] args) {
// 小数默认的类型是double,如果使用float定义变量,需要使用f或者F标记
float f = 3.141592653589793F;
System.out.println("float f = " + f);
// 小数默认的类型是double
double d = 3.141592653589793;
System.out.println("double d = " + d);
}
}
布尔型
- 表示判断的结果
- 真===假
- 成立===不成立
- 是===非
类型 | 名词 | 大小 | 范围 |
---|---|---|---|
boolean | 布尔型 | 1字节? |
class Demo09{
public static void main(String[] args) {
/*
boolean 布尔型 表示成立或者不成立、是或者非
*/
// 创建布尔类型变量,赋值true
boolean b01 = true;
System.out.println("boolean b01 = " + b01);
boolean b02 = false;
System.out.println("boolean b02 = " + b02);
// boolean b03 = "true"; true和false本来就是关键字,可以直接使用
System.out.println("boolean b01 = " + b01);
}
}
- 布尔类型占据空间是多少???
字符型
前置知识
- ASCII
- 美国标准信息交换码
- Unicode
- 万国码
创建和使用字符
- 表示单个字符
- 必须是一个字符,不能多余一个 & 不能少于一个
- 赋值方式
- 直接使用单个字符赋值
- 使用0~65536之间的数字赋值
- 使用\u 0000~ \u ffff之间的十六进制字符赋值
类型 | 名字 | 大小 | 范围 |
---|---|---|---|
char | 字符型 | 2字节 | 0~65535 |
class Demo10{
public static void main(String[] args) {
/*
1、直接使用单个字符赋值
2、使用十进制整数赋值,参考Unicode表
0~65535
3、使用十六进制赋值,参考Unicode表
\u0000 ~ \uFFFF
*/
char c01 = 'a';
System.out.println("char c01 = " + c01);
char c02 = 65;
System.out.println("char c02 = " + c02);
System.out.println(c01 + 1);
System.out.println('张' + 1 - 1);
char c03 = 24352; // 使用十进制整数赋值,参考Unicode表
System.out.println("char c02 = " + c03);
char c04 = '\u5F20'; // 使用十六进制赋值,参考Unicode表
System.out.println("char c04 = " + c04);
char c05 = 'z';
System.out.println("char c05 = " + c05);
}
}
转义字符
- Java语言中有些符号有特殊含义,有些符号需要被赋予特殊含义
- 上述内容可以使用 \ + 指定字符实现
类型转换
概述
- Java语法规定,指定数据类型可以相互转换
自动转换
- 目标兼容
- 小的类型放入大的类型,自动转换,天生安全
强制转换
- 目标兼容
- 大的类型放入小的类型,需要强制转换,有风险
转换规则
运算符【掌握】
概述
- 在运算过程中使用到的符号,这些符号被人为的赋予了特定的含义
- 分类
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
- 位运算符
算术运算符
+ 左右两个数据相加、字符串拼接
- 左右两个数据相减
* 左右两个数据相乘
/ 左右两个数据相除
% 取模,整除之后的余数 10 / 3 = 3 ... 1
++ 自增1
-- 自减1
class Demo01{
public static void main(String[] args) {
/*
+
-
*
/
%
++
--
*/
int a = 25;
int b = 10;
System.out.println("a + b = " + a + b); // 字符串拼接
System.out.println("a + b = " + (a + b)); // 整数相加
System.out.println("a - b = " + (a - b)); // 15
System.out.println("a * b = " + (a * b)); // 250
System.out.println("a / b = " + (a / b)); // 2?2.5?,整数除法运算的结果还是整数
System.out.println("a % b = " + (a % b)); // 25 / 10 = 2...5
System.out.println(18.8 % 3.3);
System.out.println(" ================++a之类的操作极少用到,了解================ ");
int c;
c = a++; // a自己自增的同时会产生一个新的结果,把结果赋值给c
System.out.println("a = " + a);
System.out.println("c = " + c);
c = a++;
System.out.println("a = " + a);
System.out.println("c = " + c);
c = a++;
System.out.println("a = " + a);
System.out.println("c = " + c);
System.out.println("===================");
int d;
d = ++b; // b自己自增的同时会产生一个新的结果,把结果赋值给d
System.out.println("b = " + b);
System.out.println("d = " + d);
d = ++b;
System.out.println("b = " + b);
System.out.println("d = " + d);
d = ++b;
System.out.println("b = " + b);
System.out.println("d = " + d);
int x = 10;
System.out.println(x++ + ++x);
}
}
赋值运算符
- 把右侧的结果赋值给左侧
=
+=
-=
*=
/=
%=
class Demo02{
public static void main(String[] args) {
/*
赋值运算符
=
+=
-=
*=
/=
%=
*/
int a = 30; // 开辟int类型的空间,名字是a,存入的数据是30
int b = 20;
a += b; // 结果等价于:a = a+b
System.out.println("a = " + a);
System.out.println("b = " + b);
a -= b; // 结果等价于:a = a-b
System.out.println("a = " + a);
System.out.println("b = " + b);
a *= b; // 结果等价于:a = a*b
System.out.println("a = " + a);
System.out.println("b = " + b);
a /= b; // 结果等价于:a = a/b
System.out.println("a = " + a);
System.out.println("b = " + b);
a %= b; // 结果等价于:a = a%b
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
关系运算符
- 判断预设的关系是否成立
- 结果只能是true或者false
>
>=
<
<=
==
!=
class Demo03{
public static void main(String[] args) {
/*
关系运算符
>
>=
<
<=
==
!=
*/
int x = 30;
int y = 20;
System.out.println("x > y ? " + (x > y));
System.out.println("x >= y ? " + (x >= y));
System.out.println("x < y ? " + (x < y));
System.out.println("x <= y ? " + (x <= y));
System.out.println("x == y ? " + (x == y));
System.out.println("x != y ? " + (x != y));
}
}
逻辑运算符
- 判断逻辑是否成立
&
&& 短路与,推荐
|
|| 短路或,推荐
!
class Demo04 {
public static void main(String[] args) {
/*
&
&&
|
||
!
*/
/*
&
逻辑与,和,同时满足
你和你的同桌身高都超过190CM
逻辑与运算的场景
true & true == true
true & false == false
false & true == false
false && false == false
逻辑与运算中出现任何一个false,结果是false:遇false则false
*/
// 你的身高 > 190 并且 同桌身高 > 190
// (heightYou > 190) & (heightHe > 190)
int heightYou = 188;
int heightHe = 191;
System.out.println((heightYou > 190) && (heightHe > 190));
/*
|
你或者你的同桌身高超过190CM
逻辑或运算的场景
true | true == true
true | false == true
false | true == true
false | false == false
逻辑或运算中出现任何一个true,结果是true:遇true则true
*/
System.out.println((heightYou > 190) | (heightHe > 190));
System.out.println(true);
System.out.println(!true); // 取反
}
}
三元运算符
- 有三个元素参与的运算,得到一个结果
class Demo05{
public static void main(String[] args) {
/*
三元运算符
布尔表达式 ? 结果01 : 结果02;
如果布尔表达式是true,得到结果01
如果布尔表达式是false,得到结果02
注意事项:
结果01和结果02的类型需要相同
表达式的结果类型由结果01和结果02决定
*/
int x = 888;
int y = 666;
// 获取较大的数值
int max = x>y ? x:y;
System.out.println("max = " + max);
// 获取比较的文字描述
String result = x>y ? "x比Y大":"x不比Y大";
System.out.println("比较的结果:" + result);
}
}
位运算符【拓展】
- 采用二进制位进行运算
class Demo06{
public static void main(String[] args) {
System.out.println(10 > 5); // true
/*
0000 1010
&0000 0101
----------
0000 0000 == 0
*/
System.out.println(10 & 5);
/*
0000 1010
|0000 0101
----------
0000 1111 == 15
*/
System.out.println(10 | 5);
/*
0000 1000
^0000 0101
----------
0000 1101
*/
System.out.println(8 ^ 5);
// 右移:失去最后一位
System.out.println(10>>1);
System.out.println(10>>2);
System.out.println(10>>3);
// 左移:后面添加一位0
System.out.println(10<<1);
System.out.println(10<<2);
System.out.println(10<<3);
}
}
控制台输入【掌握】
概述
- 我们在运行程序过程中,有时候需要向程序中输入一些数据来完成操作
- 需要用到Scanner这个类型来操作
入门案例
- 输入年龄,判断是否成年
import java.util.Scanner;
class Demo07{
public static void main(String[] args) {
/*
提示用户输入年龄,输出是否成年。
思路:
1、导入Scanner:import java.util.Scanner;
2、创建这个类型的对象
3、提示用户输入年龄
4、获取用户输入的内容
5、判断年龄是否大于等于18
6、输出判断的结果
*/
// 2、创建这个类型的对象
Scanner sc = new Scanner(System.in);
// 3、提示输入年龄
System.out.println("请输入您的年龄:");
// 4、获取用户输入的内容
int age = sc.nextInt();
// 5、判断年龄是否大于等于18
String result = age >= 18 ? "成年" : "未成年";
System.out.println(result);
sc.close();
}
}
案例
- 键盘录入个人信息
- 姓名
- 年龄
- 身高
- 是否毕业
- 个人信息
import java.util.Scanner;
class Demo08{
public static void main(String[] args) {
/*
键盘录入个人信息
- 姓名
- 年龄
- 身高
- 是否毕业
- 个人信息
思路:
1、导入Scanner
2、创建这个类型的变量【对象】
3、提示用户输入姓名
4、获取用户输入的姓名
5、提示用户输入年龄
6、获取用户输入的年龄
... ...
身高、毕业信息、个人描述信息
13、输出上述信息
*/
Scanner sc = new Scanner(System.in);
// 提示并获取用户输入姓名
System.out.println("请输入您的姓名");
String name = sc.next();
// 提示并获取用户的年龄
System.out.println("请输入您的年龄");
int age = sc.nextInt();
// 提示并获取用户的身高
System.out.println("请输入您的身高【米】");
double height = sc.nextDouble();
// 提示并获取用户的毕业信息【true/false】
System.out.println("请输入您是否毕业【true/false】");
boolean isGraduated = sc.nextBoolean();
// 提示并获取用户个人描述信息
System.out.println("请输入您的其他信息");
String info = sc.next();
System.out.println("我是:" + name + ",今年:" + age + ",身高:" + height + ",是否毕业:" + isGraduated + ",其他信息:" + info);
}
}
练习题
- 键盘录入三角形三条边长,判断能否构成三角形?
- 键盘录入矩形两条边长,计算周长和面积
- 键盘录入圆形的半径,计算周长和面积