002-基础语法

002-基础语法

标识符【掌握】

概述

  • 在java语言中用来给类、方法、变量等内容命名的一个字符序列

组成

  • 字母
  • 数字
  • _[下划线]
  • $[美元符]

命名规则

  • 见名知意
  • 不能占用关键字和保留字
类名
  • 类的名字,class后面的那个字符串
  • 每个单词的首字母大写
    • HelloWorld
    • JdbcUtil
    • UserInfo
    • BalanceAccount
    • ObjectOutputStream
  • 大驼峰
方法名
  • 小驼峰命名法
  • 第一个单词字母小写,从第二个单词开始,首字母大写
    • getAge
    • setName
    • indexOf
变量
  • 小驼峰命名法
  • 第一个单词字母小写,从第二个单词开始,首字母大写
    • myName
    • yourAge
常量
  • 所有单词中的字母全部大写
  • 多个单词使用下划线连接
    • JAVA_HOME
    • COMPANY_NAME
包名
  • 存储代码文件夹的名字
  • 公司域名倒着书写
    • com.baidu.项目名字
    • com.alibaba.项目名字.模块名字

随堂练习

  • 类名
    • 电脑、手机、轿车、拖拉机、水杯、银行账号、平头哥
  • 方法名
    • 动词、设置密码、登录、注册、验证是否存在、获取用户信息
  • 变量
    • 姓名、年龄、身高、体重、性别、备注、描述信息

关键字

概述

  • 已经被Java语言赋予了特殊含义的标识符,开发者不能再次使用

关键字/保留字大全

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

变量【掌握】

概述

  • 变量是在内存中开辟的一片空间,用来存储对应类型的数据

创建变量

  • 变量三要素
    • 数据类型
    • 变量名
    • 数据
  • 同一个作用域中,变量的名字不能重复
先声明后赋值
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
    • 美国标准信息交换码

pCjk4bt.md.png

  • 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语言中有些符号有特殊含义,有些符号需要被赋予特殊含义
  • 上述内容可以使用 \ + 指定字符实现

pCjkfKA.md.png

类型转换

概述

  • Java语法规定,指定数据类型可以相互转换

自动转换

  • 目标兼容
  • 小的类型放入大的类型,自动转换,天生安全

强制转换

  • 目标兼容
  • 大的类型放入小的类型,需要强制转换,有风险

转换规则

[pCjkhDI.md.png[/url]

运算符【掌握】

概述

  • 在运算过程中使用到的符号,这些符号被人为的赋予了特定的含义
  • 分类
    • 算术运算符
    • 赋值运算符
    • 关系运算符
    • 逻辑运算符
    • 三元运算符
    • 位运算符

算术运算符

+	左右两个数据相加、字符串拼接
-	左右两个数据相减
*	左右两个数据相乘
/	左右两个数据相除
%	取模,整除之后的余数	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);
	}
}

练习题

  • 键盘录入三角形三条边长,判断能否构成三角形?
  • 键盘录入矩形两条边长,计算周长和面积
  • 键盘录入圆形的半径,计算周长和面积
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值