java周结一(基本常识,java概念,运算符,流程控制语句,键盘录入,变量)

第一周总结

目录:

  • 计算机的组成及软件结构的划分
  • dos控制台中的常用命令
  • java平台及Java语言的特点
  • jdk环境变量的配置
  • Java中数据类型的划分
  • Java中的运算符
  • 变量
  • 显示转换和隐式转换
  • 键盘录入
    – java中的流程控制语句

一.计算机的组成及软件结构的划分
1.计算机(智能的电子设备)组成:由软件和硬件组成
软件:系统软件:DOS,windows,Linux,Mac... IOS,Android(移 动端) 应用软件:QQ,办公软件 硬件:计算机通常由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等多个部件组成。.
2.软件的结构划分:

  1. C/S结构:Client-Server :客户端和服务器端的交互
 特点:客户端想要使用服务器端的高版本功能,必须升级!
 典型的应用:QQ客户端,办公软件,其他客户端   
  1. B/S结构:Browser-Server:浏览器端和服务器端的交互
 应用:	大型网站---网银新闻,游戏网站
 特点:计算机中只要有一个浏览器(IE,谷歌,火狐,欧鹏...),就可以访问网站!

二.dos控制台中的常用命令

	盘符切换:d:
	罗列当前目录下的所有文件以及文件夹:dir
	 进入指定的目录:cd
	 回退上一级:cd..
	回退根目录:cd\
	创建目录: md 文件夹名称
	创建文件 :copy con 文件名称
        内容(ctrl+Z) 回车
	删除文件: del 单个文件  
             del *.txt
	删除目录:rd  文件夹名称(空目录)
	删除带内容的目录:
  rd  /s  文件夹名称:询问是否删除
  rd /s /q :暴力删除
	ipconfig:查看当前本地ip地址
	ping 其他计算机的ip地址 :查看本机与其他计算机的通信是否成功

三.java平台及Java语言的特点

  1. java平台版本
   JavaSE(针对桌面应用程序开发)
	JavaME(嵌入式的解决方案---移动端:Android)
	JavaEE(针对企业开发的一套解决方案)
  1. java语言的特点
`java
    开源:开发源代码 :查看Java源代码如何实现!
	跨平台:跨操作系统具体如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200926105234287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDc4NTU4MA==,size_16,color_FFFFFF,t_70#pic_center)

3.七.jre,jvm和jdk

jvm:虚拟机
JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。....
JDK (Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具
三者关系:JDK > JRE > JVM,写好的java程序,想要运行必须要有jre,而jdk包含了jre,jre包含jvm(只要需要有jdk就可以运行!)

四.dk环境变量的配置

  • 方式一:
    将jdk安装目录的bin目录路径作为path变量中的某个变量直接引用!但存在以下弊端:
弊端: 1)随着jdk版本升级:jdk8---->jdk9_...,需手动更改path环境变量,
     2)bin目录中的执行性命令和Java文件混合了,后期不好管理,不小心可能误删可执行性的exe文件可能造成其他的环境变量被误删(系统其他的软件会有问题)
  • 方式二:
    系统变量:
    新建变量名:JAVA_HOME变量值:Jdk的安装目录
    在path:引入JAVA_HOME变量%JAVA_HOME%\bin
    五.Java中数据类型的划分

Java中数据类型分为:基本数据类型和引用数据类型具体如下

A)基本数据类型:(四类8种)

整数类型:(默认int),
	byte:字节类型	占1个字节    
	short:短整型	占2个字节
	int:整数 		占4个字节
	long:长整型     占8个字节
浮点类型:默认是double
	单精度:float    :4个字节
	双精度:double   :8个字节
字符类型   char:2个字节
布尔类型 boolean	    占1个字节

B)引用数据类型:数组,接口,类(具体类,抽象类)
六.Java中的运算符

  1. 算术运算符
    基本的算术运算符+,-,*,/(默认:取值),%(取模:求余数)
    扩展的算术运算符:++,--
1)单独使用
	结论:无论++还是--在变量前面还是后面:都是对当前该变量值进行自增1或者自减1
2)参与运算使用
		如果++或者--在变量前面,先自增1或者自减1,然后运算!
		如果++或者--在变量后面,先运算(赋值),然后在自增1或者自减1

  1. 比较(关系)运算符
比较运算符也称关系运算符,:>,<,>=,<=,==,!=
比较运算符连接的表达式无论是简单还是复杂的,最终结果要么true/false
注意事项:==不能写成=
  1. 逻辑运算符 (使用居多)
    基本的逻辑运算符:
逻辑单与 &  (并列关系)结论:有false,则false
逻辑单或 | (或关系:有一个满足条件就成立了) 结论:有true,则true
逻辑异或 ^结论:相同则为false,不同则为true
逻辑非   !非true,则false,非false,则true偶数个非,是当前结果本身

扩展的逻辑运算符 (开发中使用逻辑双与/逻辑双或多一些!)

逻辑双与: &&
逻辑双或: 
&”和“&&”的区别
 单&时,左边无论真假,右边都进行运算。 
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
 “|”和“||”的区别同理,双或时,左边为真,右边不参与运算
  1. 位运算符(了解)
    基本的运算符号
位与:&(00)
位或:| (11)
位异或:^(不同为1,相同为0)
~(反码:按位取反:全部10,01,再求原码)

移动符号

左移:<<左移动,将最高符合位丢弃掉,在右边补齐0
		特点:<<符号左边的数据乘以2的移动次幂
右移:>> :右移动,如果最高符号位为0,左边补0,如果最高符号位为1,左边补齐1
	    特点:>>符号左边的数据除以2的移动次幂 
无符号右移:>>>向右移动,无论最高符合位为0还是1,左边补0!

逻辑运算符号:连接的要么数值/要么表达式—>结果:true/false 位运算符号:连接的是两个具体的数据值----->具体的结果数据!

*5. 三元(三目)运算符(使用居多)
格式 : (表达式) ? 执行true的结果:执行false的结果
表达式:可以是简单的或者复杂的表达式------>true/false
执行流程:

1)先判断表达式是否成立,如果成立,执行true的结果
			2)如果不成立,执行false的结果
	一般没有要求是什么数据类型,默认int类型

七.变量
变量的三要素:

`     1)数据类型
      2)变量名(遵循标识符的规则)
      3)初始化值

变量的概念:在程序运行过程中,其值不断发生改变的量.
定义的格式:数据类型 变量名 = 值;eg:int a=2; (分号一定要带,表示语句结束!)
使用变量需要注意:

a.	变量在使用前必须给定一个初始值
b.	同一个变量不能重复定义且同一行一般定义一个变量(有的面试题:一行定义多个变量)
c.	在运算时需要保证变量的类型一致
d.	给变量命名的时候:见名知意

八.显示转换和隐式转换

  1. 隐式类型提升:
byte,short,char,三者之间互相不转换,一旦他们参与运算,数据类型优先提升int类型
  1. 强制类型转换
	目标数据类型 变量名 = (目标数据类型)初始化值;	
强制类型转换:不要随意使用,除非一些业务需求必须使用的时候才能用!强制类型:会损失数据的精度

九. 键盘录入

Scanenr是Java核心类: java.util.Scanenr; (Java中只要不是java.lang包下的类都需要导包)

使用步骤:
1)导包:(目前写在class上面) 固定写法
	 格式 import java.util.Scanner; (用哪个类,导哪个类)
2)固定格式:创建键盘录入对象
	Scanner  键盘录入的对象名 = new Scanner(System.in) ;
3)友情提示: 输出语句 "请您输入一个数据:"
4)接收数据 (接收int类型数据)
	 int 接收的变量名=  键盘录入的对象名.nextInt() ;//录入下一个int类型的数据
5)输出/完成业务操作
1)同时录入两个int
2)同时录入两个字符串String    nextLine()
3)先录入字符串,在录入一个int
以上三个都没有问题.
4)先录入int,在录入一个String
	 存在问题:
		先录入int类型的数据,在录入String---->字符串数据没有录入,直接漏掉了回车符号
		每次录入数据----->"回车符号"  ,回车符号本身---->字符串值
解决问题:	
//先录入int,在录入一个String
		System.out.println("请输入第一个数据:") ;
		int a = sc.nextInt() ;
		System.out.println("请输入第二个数据:") ;
		//创建一个新的键盘录入对象
		Scanner sc2 = new Scanner(System.in) ;
		String b = sc2.nextLine() ; //正式的用法
		//String b = sc.next() ; //通用方式 (自己玩的)

十. java中的流程控制语句

1.顺序结构语句

比较简单,一旦进入main方法中(由Jvm 调用),从有效行开始依次从上往下执行!

2.选择结构语句分两种:
1).if语句:三种格式

格式1.if(表达式){ 语句;}
执行流程:
	判断表达式是否成立,如果是true,成立,执行语句;
	如果不成立,不执行!
应用场景:针对单个业务场景进行判断
格式2.if(表达式){ 语句1;}else{语句2;}
执行流程:
	1)首先判断表达式是否成立,如果是true,执行语句1
	2)如果不成立,执行语句2;
应用场景:针对两种情况进行判断
if语句的第三种结构:
	if(表达式1){语句1;
		}else if(表达式2){
			语句2;
		...
		}else{
			语句n+1 ;}
		
执行流程:
	1)首先判断表达式1是否成立,如果成立,执行语句1,if语句结束!
	2)如果表达式1不成立,再次判断表达式2是否成立,如果成立,执行语句2,语句结束!
	3)如果上述表达式都不成立,就执行else中的语句,if语句结束!
	
应用场景:
	针对多种情况进行判断

if语句整体的注意事项:

1)if的地方需要有一对{} ,{}的地方不能分号; 
2)在一个方法中(main() )定义一个{xxxd代码}---->局部代码块 (了解)
作用:限定局部变量的生命周期
局部变量:在方法定义中的变量---->随着方法的调用完毕而消失!内存中:GC 垃圾回收器(自动回收这些对象或者变量)

If语句格式2和三元运算符的区别: If语句格式2的范围更大一些(推荐使用),既可以操作具体数据值,也可以操作输出语句;而三元运算符仅仅作为运算符,一般操作具体数值及比较.
if语句格式得嵌套

结构:
if(表达式){//表达式成立
	if(表达式1){
		语句1;}else{
		语句2;}}else{
	//不成立
	if(表达式11){
		语句11;}else{
	语句22;}}
执行流程: 首先判断外层if中表达式是否成立,如果成立,执行表达式2是否成立
	   如果表达式2成立,执行语句1;否则,执行语句2;
	  外层if中表达式不成立,就执行else中的语句
	首先判断表达式11是否成立,如果成立,执行语句11,
			否则执行语句22;

2).switch语句

switch语句格式: 
switch(表达式) {
 case1: 语句体1; break;
 case2: 语句体2; break;default: 语句体n+1; break; }
执行流程: 1)先判断表达式的值它和case语句值1,是否匹配如果匹配,执行语句1,遇见break ,switch语句结束了!
		2)如果值1不匹配,继续判断值2是否和表达式中的值是否匹配,如果匹配,执行语句2,遇见break,switch语句结束!
		3)如果上面的所有case语句都不匹配,执行default语句,执行语句n,直接结束
	switch(表达式)---->本身可以使用的类型:byte,short,char,int类型
	JDK5以后可以枚举enum(引用类型--->定义常量)  后面讲(Java高级部分多线程Thread类: State(枚举类型))
	JDK7以后:可以使用String类型

switch语句使用的注意事项:

1)switch语句中的case语句后面跟的常量值,不能跟变量!  
	对比:javascript:switch语句 中的case可以是常量也可以变量
	2)case语句中的break不能轻易省略,否则就会造成"case穿透"
	如果没有写break,跟下面case值不进行比较,直接运行语句,直到遇见break结束!
	3)switch中的default语句:书写位置默认是在末尾,但是它也可以在switch语句中的任何位置,但是不影响执行流程
都需要先跟case中的值进行比较,如果都没有匹配,都需要执行default...
如果default在语句的末尾,break可以省略,如果在语句中的话,不建议省略break ;
	4)关于switch语句的结束问题:
	   遇见break (中断,结束的意思) ,switch语句结束(break:属于跳转控制语句中一种:两种场景:switch/循环语句中)
	   语句默认执行到末尾!循环结束.
	

3.循环结构
1).for循环(使用最多)

for循环的格式:
		for(初始化语句;条件表达式;步长语句){
			  循环体语句;}
执行流程:
	1)初始化语句给变量进行赋值,只执行一次
	2)判断这个条件表达式是否成立,
		如果成立,就执行循环体语句,在去执行步长语句 (++,--)
	3)再次判断条件表达式是否成立,如果成立,继续上面执行方式...
		...
	4)一直循环到条件表达式不成立的时候,for循环结束!

2).while循环(其次)

while循环语句格式:

基本格式
while(判断条件语句) {
循环体语句;
}
扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}

for循环和while循环的区别

for循环语句和while循环语句可以等价转换,但还是有些小区别的
   使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使
用效率。
   场景区别:for循环适合针对一个范围判断进行操作while循环适合判断次数不明确操作

3).do-while循环(很少使用)

dowhile循环语句格式:
基本格式
do {
循环体语句;
}while((判断条件语句);
扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);

do…while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性,因此初学者不建议使用do...while循环。
三种循环语的区别:

   种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的:
     dowhile循环至少会执行一次循环体。
     for循环和while循环只有在条件成立的时候才会去执行循环体
注意事项:
写程序优先考虑for循环,再考虑while循环,最后考虑dowhile循环
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页