01
Java 三个版本
1.JavaSE(针对桌面应用程序开发)
2.JavaME(嵌入式的解决方案—移动端:Android)
3.JavaEE(针对企业开发的一套解决方案)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HDd4trZO-1601111153914)(D:\杂项软件\weixinobU7VjvgF-d9AgcxQA-yxaSnyU-o\6c5d75ba18e9411bace073c55b8c2dce\clipboard.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GLEqRzyF-1601111153916)(D:\杂项软件\weixinobU7VjvgF-d9AgcxQA-yxaSnyU-o\f3f18628a37e4b2586b6e38db10d07b9\clipboard.png)]
一、基本概念
1.常用的DOS命令
1-打开DOS命令窗口:win+r或者在文件夹路径下输入cmd
2-切换盘符:d:
3-查看当前路径下目录文件:dir
4-切换路径:cd 目录名
5-回退上一级目录:cd…
6-回退至根目录:cd/
7-创建目录:md 目录名称
8-创建文件 :copy con 文件名称
内容(ctrl+Z) 回车
9-删除文件:del 删除同类型文件 del*.+类型
10-删除目录:rd 文件夹名称(必须是空文件夹)
11-删除目录:rd/s 询问是否删除 rd/s/q 暴力删除
12-查看ip地址:ipconfig
2.JDK JRE JVM 基本概念和关系
JDK (Java Development Kit):是Java程序员开发工具包,包含JRE和开发人员使用的工具
JRE(Java Runtime Environment):是Java程序运行时环境,包含JRE和运行环境时所需要的核心类库
JVM(Java Virtual Machine):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vurBPIG6-1601111153917)(C:\Users\liwenbo\AppData\Roaming\Typora\typora-user-images\image-20200926132706038.png)]
三者之间的关系:JDK>JRE>JVM
运行程序必须要有JRE而JDK包含了JRE,JRE包含JVM
3.环境变量的配置
1)将jdk安装目录的bin目录路径作为path变量中的某个变量直接引用
在此电脑----属性----高级系统设置------环境变量-----在系统变量—新建变量命名为JAVA_HOME 变量值为jdk的安装路径
在path中引入JAAVA_HOME变量%JAVA_HOME\bin
4.常量
常量的概念:在程序运行过程中,其值不会发生改变的量。
常量分为两种: 第一种 字面值常量 (字串符常量、字符常量、整数常量、小 数常量、布尔常量、空常量)
第二种 自定义常量final
5.计算机进制
计算机的底层运行的是二进制 0 1 0 1 …
二进制以0b开头 由01组成
八进制以0开头 由0-7组成
十六进制以0x开头 由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f组成
十进制-x进制 :用当前十进制除以基数,一直除到商为0,余数反转
x进制-十进制:位权展开法:系数乘以基数的权次幂相加
- 8421码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6JWth9p0-1601111153918)(C:\Users\liwenbo\AppData\Roaming\Typora\typora-user-images\image-20200926134803894.png)]
6.变量
变量的概念:在程序运行过程中,其值不断发生改变的量。
变量的三要素:1.数据类型 2. 变量名 (遵循标识符规则)3.初始化值
- 标识符规则:(开头必须以字母、_、$ 不能以数字开头 不能以关键字命名变量 不能出现特殊符号)
使用常量的注意事项:
1-变量在使用前必须给定一个初始值
2-同一个变量不能重复定义且同一行一般定义一个变量
3-在运算时需要保证变量的类型一致
4-变量的命名除了上述标识符规则 还应做到见名知意
7.Java中数据类型的划分
1.基本数据类型:
-
整数类型:(默认int)
- byte:字节类型 占1个字节 取值范围-128-127
- short: 短整型 占2个字节
- int: 整数 占4个字节
- long: 长整数 占8个字节
-
浮点类型:(默认是double)
-
float: 单精度 占4个字节
-
double:双精度 占8个字节
-
-
字符类型:char 占2个字节
-
布尔类型:boolean 占1个字节
2.引用数据类型
数组,接口,类(具体类,抽象类) 面向对象讲JavaWEB/JavaEE:研究引用类型!
8.隐式类型提升
byte,short,char,三者之间互相不转换,一旦他们参与运算,数据类型优先提升int类型(要点)
9.Java中的强制类型转换
目标数据类型 变量名 = (目标数据类型)初始化值;
强制类型转换:不要随意使用,除非一些业务需求必须使用的时候才能用!
强制类型会损失数据的精度
10.Java中的运算符
运算符之前关于编程中的"+":
- 表示数据是一个正整数
- 表示算数运算符中的加法运算
- 字串符拼接符号
- 字串符+(拼接符号)任何数据=新的字串符
-
算术运算符
a.基本的算术运算符
+ - * / (默认:取值) %(取模:求余数)
b. 扩展的算术运算符: ++ –
1)单独使用
结论:无论++还是–在变量前面还是后面:都是对当前该变量值进行自增1 或者自减1
2)参与运算使用
如果++或者–在变量前面,先自增1或者自减1,然后运算!
如果++或者–在变量后面,先运算(赋值),然后在自增1或者自减1
-
赋值运算符
-
比较(关系)运算符
> < >= <= == !=
变量范围:数学表达式:3<=x<=5 Java表达式:x>=3 && x<=5
连接的表达式无论是简单还是复杂的,最终结果要么true/false
注意事项:==不能写成=
-
逻辑运算符
基本的逻辑运算符:
逻辑单与 & (并列关系)结论:有false,则false
逻辑单或 | (或关系:有一个满足条件就成立了) 结论:有true,则true
逻辑异或 ^结论:相同则为false,不同则为true
逻辑非 !非true,则false,非false,则true偶数个非,是当前结果本身
扩展的逻辑运算符 (开发中使用逻辑双与/逻辑双或多一些!)
逻辑双与: &&
逻辑双或: ||
Ø “&”和“&&”的区别 单&时,左边无论真假,右边都进行运算。
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算
逻辑运算符号:连接的要么数值/要么表达式—>结果:true/false
位运算符号:连接的是两个具体的数据值----->具体的结果数据!
-
位运算符
基本的运算符号位
与:&(有0则0)
位或: | (有1则1)
位异或:^(不同为1,相同为0)
**~反码:**按位取反:全部1变0,0变1,再求原码)
移动符号
左移:<<左移动,将最高符合位丢弃掉,在右边补齐0
特点:将<<符号左边的数据乘以2的移动次幂
右移:>> :右移动,如果最高符号位为0,左边补0,如果最高符号位为1,左边补齐1
特点:将>>符号左边的数据除以2的移动次幂
无符号右移:>>>向右移动,无论最高符合位为0还是1,左边补0!
-
三元三目运算符
单目: int a = 5 ;
二目: 两个变量进行比较 x == y
三元运算符—三目运算符(未声明默认int)
l 格式 (表达式) ? 执行true的结果:执行false的结果
l 表达式:可以是简单的或者复杂的表达式------>true/false
l 执行流程:
1)先判断表达式是否成立,如果成立,执行true的结果
2)如果不成立,执行false的结果
11.键盘录入
Scanenr是Java核心类: java.util.Scanenr;
(Java中只要不是java.lang包下的类都需要导包)
int nextInt():接收int类型数据
String nextLine():接收字符串类型的数据 (推荐这个:正式的写法)
String next() :也可以录入字符串
1)同时录入两个int
2)同时录入两个字符串String nextLine()
3)先录入字符串,在录入一个int
以上三个都没有问题
使用步骤:
1)导包:(目前写在class上面) 固定写法
格式 import java.util.Scanner; (用哪个类,导哪个类)
2)固定格式:创建键盘录入对象
Scanner 键盘录入的对象名 = new Scanner(System.in) ;
3)友情提示: 输出语句 “请您输入…:”
4)接收数据 (接收int类型数据)
int 接收的变量名= 键盘录入的对象名.nextInt() ;//录入下一个int类型的数据
5)输出完成业务操作
import java.util.Scanner;
class Test
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);//键盘录入准备
System.out.println("请输入您的会员卡四位尾号:");//友情提示
int vip = input.nextInt(); //设置一个名称接收
int bai = vip/100%10;//取余
int suiji =(int)(Math.random()*10);
//Math random是0-9的随机小数
//System.out.print("您会员卡随机产生的尾号是:"+(int)suiji);
//使用int将double强制类型转换 没有四舍五入 在二进制里直接截取 小数点后的都不要
System.out.println("百位数字是:"+bai);
System.out.println("随机数字是:"+suiji);
if ( bai == suiji )//()内为条件 if语句内不能是赋值单一等号 =
{
System.out.println("恭喜您获得幸运奖!!!获得高圆圆联系方式!");
}
else
{
System.out.println("非常遗憾!!!烧香去吧!");
}
}
}
12.流程控制语句
-
顺序结构语句
一旦进入main方法中(由Jvm 调用),从有效行开始依次从上往下执行!
-
选择结构语句
-
if语句
格式一:
if(表达式){ 语句;}
执行流程:
判断表达式是否成立,如果是true,成立,执行语句;
如果不成立,不执行!
格式二:
if(表达式){ 语句1;}else{语句2;}
执行流程:
1)首先判断表达式是否成立,如果是true,执行语句1
2)如果不成立,执行语句2;
格式三:
if(表达式1){语句1; }else if(表达式2){语句2; …}else{语句n+1 ;}
执行流程:
1)首先判断表达式1是否成立,如果成立,执行语句1,if语句结束!
2)如果表达式1不成立,再次判断表达式2是否成立,如果成立,执行语句2,语句结束!
3)如果上述表达式都不成立,就执行else中的语句,if语句结束!
if语句格式的嵌套
结构:
if(表达式){//表达式成立if(表达式1){语句1;}else{语句2;}}
else{ //不成立 if(表达式11){语句11;}else{语句22;}}
执行流程:
首先判断外层if中表达式是否成立,如果成立,执行表达式2是否成立如果表达式2成立,执行语句1;否则,执行语句2;外层if中表达式不成立,就执行else中的语句,首先判断表达式11是否成立,如果成立,执行语句11,否则执行语句22;
if语句的注意事项:
1)有if的地方需要有一对{} ,有{}的地方不能分号;
2)在一个方法中(main() )定义一个{xxxd代码}---->局部代码块 (了解)
作用:限定局部变量的生命周期
局部变量:在方法定义中的变量---->随着方法的调用完毕而消失!内存中:GC 垃圾回收器(自动回收这些对象或者变量)
-
swtich语句
-
switch(表达式) { case 值1: 语句体1; break;
-
case 值2: 语句体2; break;
…
default: 语句体n+1; break; }
执行流程:
1)先判断表达式的值它和case语句值1,是否匹配如果匹配,执行语句1,遇见break ,switch语句结束了!
2)如果值1不匹配,继续判断值2是否和表达式中的值是否匹配,如果匹配,执行语句2,遇见break,switch语句结束!
3)如果上面的所有case语句都不匹配,执行default语句,执行语句n,直接结束
switch语句使用的注意事项:****
1)switch语句中的case语句后面跟的常量值,不能跟变量!
对比:javascript:switch语句 中的case可以是常量也可以变量
2)case语句中的break不能轻易省略,否则就会造成"case穿透"
如果没有写break,跟下面case值不进行比较,直接运行语句,直到遇见break结束!
3)switch中的default语句:书写位置默认是在末尾,但是它也可以在switch语句中的任何位置,但是不影响执行流程
都需要先跟case中的值进行比较,如果都没有匹配,都需要执行default…
如果default在语句的末尾,break可以省略,如果在语句中的话,不建议省略break ;
-
13.循环结构语句
for循环(使用最多)
while循环(其次)
do-while循环(很少使用)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WtnnLwEt-1601111153919)(C:\Users\liwenbo\AppData\Roaming\Typora\typora-user-images\image-20200926161224429.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-swpUZwau-1601111153920)(C:\Users\liwenbo\AppData\Roaming\Typora\typora-user-images\image-20200926161303159.png)]
for循环(使用最多)
for循环的格式:for(初始化语句;条件表达式;步长语句){循环体语句;}
执行流程:
1)初始化语句给变量进行赋值,只执行一次
2)判断这个条件表达式是否成立,
如果成立,就执行循环体语句,在去执行步长语句 (++,–)
3)再次判断条件表达式是否成立,如果成立,继续上面执行方式…
4)一直循环到条件表达式不成立的时候,for循环结束!
求和的步骤:
1)定义一个最终的结果变量 :最终的一个值 int sum = 0 ;
2)将1,..10之间的数据遍历(一一获取出来)
3)将当前sum值依次和数据本身做一个 +