1.Java入门【了解】
Java之父:詹姆斯·高斯林
Java面向对象的方式由以下三个部分组成
OOA(面向对象分析)
OOD(面向对象设计)
OOP(面向对象编程)
1.JDK
JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。
JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin 和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而 jvm和 lib和起来就称为jre。
2.JRE
是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
3.JVM
就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
三者之间的关系:简单来说就是JDK包含JRE,JRE又包含JVM的关系
2.常量【伪重点】
2.1 生活中的常量
那些内容我们可以认为是常量???
数值
π E C G
文本
先帝创业未半…
北国风光,千里冰封
文字
A B C D
你 我 他
1 2 3
常量在生活中就是不能发生改变的量
数值,文本,文字…
开发来源于生活,最终高于生活,反馈于生活
2.2 开发中使用的常量
代码运行的过程中不会发生改变的数据就是常量!!!
开发中使用的常量
整数
1 2 3 4 5
-1 -2 -3 -4 -5
小数(浮点型)
3.14 0.618 9.8 1.0 0.0
布尔类型(boolean)
true 对/真
false 错/假
字符常量
【重点】
使用【英文单引号】包含的【单个元素】
‘A’ ‘B’ ‘C’ ‘a’ ‘b’ ‘c’
‘你’ ‘我’ ‘他’ ‘1’
‘123’ 啥也不是
字符串常量
【重点】
使用【英文双引号】包含的所有内容
“壮哉我大中华…”
“1”
2.3 转义字符[了解]
代码中有些标点符号有特殊含义
代码中也存在一些本身没有含义的字符,通过 \ 转义之后,变成有 一定含义的字符
\n 回车
\t 制表符
\r 换行
2.4 常量使用总结
常量在代码中是无法修改的量,主要功能是提供给程序运行使用 的数据,存在整数,小数,真假关系(布尔类型),字符常量,字符串 常量。
【重点】
字符使用不允许使用字符对应的编码,有且只能使用字符 本 身!!!
3.变量【伪重点】
3.1 生活中的变量
变量特征:
3.3变量名/标识符规范【重点】
在注册邮箱时,可以发现邮箱中有要求
6~18字符,可以使用字母,数字,下划线,要求必须是字母开头
以下规范参考AJCG 阿里巴巴Java开发手册,码出规范,码出高效。
什么是标识符
程序员自己对于代码中一些内容起的名字,变量名,方法名,类 名…
规范
/* 整型变量演示 */
class Demo3 {
public static void main(String[] args) {
/* 数据类型 变量名 = 初始化数据; */
// 变量定义一行只定义一个,并且初始化操作
byte byteNumber = 10;
short shortNumber = 20;
int intNumber = 30;
// 40L是告知编译器这里是一个long类型
long longNumber = 40L;
// 使用对应变量,直接使用变量名即可!!!
System.out.println(byteNumber);
System.out.println(shortNumber);
System.out.println(intNumber);
System.out.println(longNumber);
}
}
浮点型变量演示
/* 浮点型变量演示 */
class Demo4 {
public static void main(String[] args) {
float floatNumber = 3.14F;
/*
Demo4.java:4: 错误: 不兼容的类型: 从double转换 到float可能会有损失 float floatNumber = 3.14; ^
1 个错误
计算机保存数据,考虑第一原则是数据的精度,double类 型精度 是远远高于float类型,计算机会将所有的小数都看作是 double 类型据。 3.14默认为double类型,这里赋值给float 是存在精度
不一致报错。
这里需要告知计算机,这里3.14是一个float类型,在 3.14之后加上一个大 写F
float floatNumber = 3.14F;
*/
double doubleNumber = 0.618;
System.out.println(floatNumber);
System.out.println(doubleNumber);
}
}
字符类型变量演示
class Demo5 {
public static void main(String[] args) {
/* 要求字符类型的常量有且只能使用字符本身 */
char ch1 = 'A';
char ch2 = '我';
System.out.println(ch1);
System.out.println(ch2);
}
}
boolean类型变量演示
class Demo6 {
public static void main(String[] args) {
boolean ret1 = true;
boolean ret2 = false;
System.out.println(ret1);
System.out.println(ret2);
}
}
错误情况演示
class Demo7 {
public static void main(String[] args) {
int num1 = 10;
/*
Demo7.java:14: 错误: 找不到符号
System.out.println(num2);
^
符号: 变量 num2
位置: 类 Demo7
1 个错误
*/
// System.out.println(num2);
int num3;
/*
Demo7.java:24: 错误: 可能尚未初始化变量num3
System.out.println(num3);
^
1 个错误
*/
System.out.println(num3);
}
}
4.运算符
4.1 算术运算符
小学知识点:
加+,减-,乘×,除÷,小括号()
开发中使用的算术运算符:
加 + 减 - 乘 * 除 / 取余 % 小括号 () = 赋值号
注意事项:
/*算术运算符演示*/
class Demo1{
public static void main(String[] args){
//定义两个int类型变量
int num1 = 10;
int num2 = 20;
// num1 + num2结果赋值给num1
num1 = num1 + num2;//num1=30 num2=20
//变量在代码运行的过程中是会发生改变的
num1 = num1 * num2;//num1=600 num=20
num1 = num1 - num2;//num1=580 num2=20
num1 = num1 / num2;//num1=29 num2=20
// 20/29=0...20
//5/2=2.....1
//9/4=2.....1
num1 =num2 % num1;//num1=20 num2 =20
/*
num2的值从开始到最后没有发生改变
num2从开始到现在从未被赋值
*/
num1+=num2;
num1*=num2;
num1%=num2;//num1=num1%num2
System.out.println(num1);
System.out.println(num2);
}
}
4.2关系运算符
大于
< 小于
= 大于等于
<= 小于等于
!= 不等于
== 等于判断
注意事项:
4.3自增自减运算符【难点,考点】
【明确】 自增自减运算符【有且只能操作变量】,不可以操作常量
【建议】 开发中尽量减少或者标准化使用自增自减运算符。
语法
++ 自增运算符 操作的变量自增1 等价于 += 1
– 自减运算符 操作的变量自减1 等价于 -= 1
【难点】
前后关系
自增自减运算符在
变量之前:首先执行自增自减操作,再来完成当前行代码 的运行
变量之后:首先执行当前行代码,再来执行自增自减操作
【建议】
/*自增运算符前后关系演示*/
class Demo4{
public static void main(String[] args){
int num1=10;
//双引号内容所见即所得
/*
自增运算符在操作之后,首先操作数原始数据参与该代码运行
当前代码运行结束之后,再进行自增操作
先执行当前代码,再进行自增操作
*/
System.out.println("num1++ :"+num1++);//num1++ :10
System.out.println("num1 :"+num1);//num1 :11
/*
自增运算符操作数之前,首先执行自增操作,num1 += 1;
num1==>12 然后在进行数据展示
先执行自增,在参与当前代码执行
*/
System.out.println("++num1 : "+ ++num1);//++num1 : 12
System.out.println("num1 : "+num1);//num1 :12
}
}
【自增自减运算符考点】
/*自增自减面试题1*/
class Demo6{
public static void main(String[] args){
int num = 5;
int ret = num++ * ++num;
System.out.println(ret);
System.out.println(num);
/*
请问num值经历了几次自增操作?
两次,num确定最后结果为7
ret的结果从何而来?
num++
++在后,提供的数据5,num++在运行表达式中提供的数据为5
这里运算操作是一个乘以操作,num++需要执行完毕 num==>6
++num:
++在前,提供的数据6+1==>7
最终表达式的结果为
5 * 7 = 35 ==>ret;
int ret = num++ * ++num;拆解
num == 5;
num += 1 ==>6
*
++num ==>7
*/
}
}
/*常见面试题2*/
class Demo7{
public static void main(String[] args){
int num=5;
++(num++);
System.out.println(num);
/*
Demo7.java:5: 错误: 意外的类型
++(num++);
^
需要: 变量
找到: 值
1 个错误
解释:
因为{num++)是存在于小括号以内,按照计算优先级处理,首先计算
小括号里面的内容,但是因为小括号是一个整体,对外的数据时num++
的结果,这是一个常量!!!
自增自减运算符,只能操作变量,不可以操作常量。
语法报错!!!
同理
++num++也是错误的
++num结果是一个常量
(num)这个是常量还是变量呢
这个小括号是无用的!!!
(num)++这是对的
num=5
拿++num*++num=42
5
num++ + --num + ++num
num=16
*/
}
}
4.4逻辑运算
与 ( &)
银行的金库,两个人两把钥匙,需要同时在场,缺一不可。
&&
【重点】同真为真,有假【即】假 或
自己家门,我和我女朋友出去逛街,只要有一个人带有钥匙就可 以回家,满足一个条件即 可。
||
【重点】有真【即】真,同假为假
非 取反 !
逻辑运算符运算的结果都是boolean类型数据。
通常用于条件判断,数据过滤…
代码演示
/*逻辑运算符演示*/
class Demo8{
public static void main(String[] args){
//定义一个boolean类型的变量
boolean ret = false;
ret = 5 > 3 && 10 > 8;
System.out.println("ret :"+ret);//true
ret = 5 < 3 && 10 > 8;
System.out.println("ret :"+ret);//false
ret = 5 < 3 || 10 > 8;
System.out.println("ret :"+ret);//true
ret = 5 < 3 || 10 < 8;
System.out.println("ret:"+ret);//false
ret = !(5 > 3);
System.out.println("ret :"+ret);//false
}
}
【逻辑运算符短路原则】
/*逻辑与短路原则 */
class Demo9{
public static void main(String[] args){
int num = 5;
boolean ret = false;
/*
只要有错后面的就不看了吗?为了效率是吗?
逻辑与的情况下:
同真为真,有假【即】假
当出现一个条件为false之后,整个逻辑与表达式的结果为
false,从false之后的其他所有条件都不会执行。
计算机的节约性能问题!!!
*/
ret = num > 10 && ++num>1;
System.out.println("ret :"+ret);
System.out.println("num :"+num);
}
}
/*逻辑或短路原则*/
class Demo10{
public static void main(String[] args){
int num = 10;
boolean ret = false;
/*
逻辑或短路原则
有【真】即真,同假为假
只要发现一个条件为真,整个表达式结果已经确定为真
从true条件开始其他条件不需要执行
*/
ret = num > 5 || ++num > 20;
System.out.println("ret :" + ret);//true
System.out.println("num :"+num);//10
}
}