第一周-周总结

-----------------------------java基础篇------------------------------------------

------java发展史

诞生时间:在1995年由SUN发布。

------java优势

简单、纯面向对象,开源,且可跨平台

------java环境准备工作

第一步:安装JDK(最低安装8.0版本)【ps:网传,8.0yyds】
第二步:配置JDK(环境变量)【共计三个变量】

        1:java_HOME:jdk的安装目录【作用:告知计算机JDK的位置】

        2:path:jdk的bin目录【作用:告知计算机其他软件JDK命令所在位置】

        3:CLASSPATH:【作用:告知计算机编译生成的字节码文件的位置】

         PS:.代表当前目录

 第三步:名词解释

        1:JDK:java工具包【ps:由类库、JRE、调试工具和编译器总成】

        2:JRE:java的运行环境【ps:JVM、解释器】

        3:JVM:java虚拟机【ps:可以屏蔽操作系统之间的底层差异,为跨平台提供支持】

------JAVA的运行机制

源代码-->编译器-->编译成字节码文件(平台通用文件)-->解释器-->解释执行

【PS:先编译,后执行】     

------第一个JAVA程序

目标:使用java代码输出hello world语句;准备:新建后缀名为java的源文件

一:基础知识梳理

1:class:类

【1:是盛放代码的容器;2:是程序的基本组成部分】

2:类名 :随便起【要求:在语法允许的范围内】

【1:作用为区分各个类;2:同一源文件下的类不可以重名】

3:{}:划分类的边界

4:主函数:程序的入口

【1:写法固定;2一个类中只能存在0-1个主函数;3:所有想要运行的内容必须在主函数内】

5:输出语句:将某个内容展示到空值台查看

【1:写法固定;2:加ln:输出内容独占一行,可以输出空值;3:不加ln:输出内容不会独占一行,无法输入空值】

6:运行【代码演示】
//编译
javac 源文件名.java
//执行
Java.类名

【1:每个类都会在编译完成后生成一个对应的字节码文件;2:字节码文件的文件名必须与对应的 类保持一致;3:执行时,执行的就是字节码文件】

【代码演示】

class hello1{
            public static void main(String[]args){
                System.out.Println("helloworld");
                System.out.Println("helloworld");

            }
}

二:编码规范

硬性规范

        1:严格区分大小写

        2:命名不能以数字开头

        3:命名只能由字母、数字以及下划线(_)和($)组成【空格也属于符号】

        4:命名不能使用关键字和保留字

软性规范

        1:不能以汉字命名

        2:类名采用大驼峰命名法【所有组成部分首字母大写】(如:StudentClass)

        3:变量、方法名采用小驼峰命名法【从第二个组成部分开始大写】(如:studentAge)

        4:常量命名全大写,多个组成部分之间下划线(_)链接(如:STUDENT_NUMBER)

        5:做到望名知意

        6:注意代码之间的层次缩进

------公开类-piblic class

所有位置都能访问的类就是公开类

代码演示:

public class 类名{
    
}

使用要求

1:公开类名必须与源文件名保持一致

2:一个源文件中至多存在一个公开类

------注释

不参与运行,能帮助程序员添加代码解释备注的说明就是注释【分为三种】

第一种:单行注释

代码演示:

//只能注释一行内容
//int a = 10;

第二种:多行注释

代码演示:

/*
我是一行被注释的内容
我是一行被注释的内容
我是一行被注释的内容
我是一行被注释的内容
我是一行被注释的内容
我是一行被注释的内容
*/

  第三种:文档注释

代码演示:

/**
我是很多行,但是被注释了
当你能给公开类或者方法添加说明时记得来找我,我可以帮你的
*/

------包-package

可以帮助你整理归纳字节码文件

代码演示:

package 包名1,包名2,包名3,包名n;

包的使用说明

        1:命名应该全小写

        2:必须写在源文件有效代码第一行

        3:书写package后必须带包编译和运行

        【补充:接下来是带包编译和运行的代码演示】

//带包编译:
javac -d .源文件名.java
//带包运行
java 包名.类名

        4:一个源文件可以存在0-1个package语句

------变量和运算符

可以利用逻辑操作数据的过程可以称呼为程序

操作数据就是增、删、改、查以及存

------变量的概念

变量是计算机内存中的一块存储空间,作用为存储一个数据,是存储数据的基本单元

------变量的组成

变量由数据类型、变量名以及值组成的

1:数据类型:声明内部存放的数据是什么类型的数据(数据类型分为基本数据类型和引用数据类型)【补充:基本数据类型:byte、short、int、long、float、double、char、boolean】

2:变量名:为了更好的区分变量

3:值:内部存放的数据

------变量的创建

【变量的创建共分为四种】

第一种:先声明,后赋值【代码演示】

数据类型 变量名;//声明
变量名=值;//赋值
//eg:
int age;//先声明
age=22;//后赋值

【注意:变量赋值之后才可以使用】

第二种:声明的同时直接赋值【代码演示】

//数据类型 变量名=值;
//eg
int age = 23;

第三种:同时声明多个变量,再一一赋值【代码演示】

数据类型 变量名1,变量名2,变量名3,变量名n,//声明多个
变量名1=值1
变量名2=值2
变量名3=值3
变量名n=值n

【代码举例】

int score1,score2,score3;//声明多个
        score1=90;
        score2=88;
        System.out.println(score1);
        System.out.println(score2);
      //  System.out.println(score3);错误
        score3=60;
        System.out.println(score3);

【注意:1:多个变量的数据类型必定一致;2:未赋值前变量仍然不可使用】

第四种:同时声明多个变量并直接赋值【代码演示】

数据类型 变量名1=值1,变量名2=值2,变量名n=值n

代码举例:

//同时声明多个并直接赋值
        int score4=70,score5=68,score5=67,score6=99;

【总结:第三种写法和第四种写法可以共存】

------数据类型

java是强类型的语言,每个数据都有自己对应的数据类型,同时,每个容器也必须声明自身的数据类型

【数据类型大体分为两种:第一种:基本数据类型,第二种:引用数据类型】

第一种:基本数据类型

根据数据的不同表现形式分为了

1:整数类型;2:小数类型(浮点数);3:字符类型;4:布尔类型

1:整数类型
数据类型字节长度取值范围(十进制)
byte        1B-128~127
short2B-32768~32767
int4B
long8B

【注意:1:int为整数的默认类型;2:long类型的值超出int的取值范围时必须在末尾添加L或者l】

【建议:这里为了方便记忆,可以记住加L】

2:小数类型(浮点数)
数据类型字节长度取值范围
float(单精度浮点数}4B
double(双精度浮点数8B

【注意:1:double为小数类型的默认类型;2:float类型在赋值时末尾必须添加F或者f】

3:字符
数据类型字节长度取值范围
char2B0~65535

【注意:1:单引号赋值:值内部只能由一个组成部分】

char 变量名='值'

【2:数值的赋值,每个数字都有一个自己对应的字符,数字不能超出取值范围】

大小写字母对应数字大小
A~Z65~90
a~z97~122

char 变量名=数字;

【char类型进行教学运算时会先统一换算为数值状态】

【3:unicode :编码赋值——了解就好】

char 变量名='\u0041';
4:布尔类型
数据类型取值应用场景
booleantrue(真)  false(假)条件判断

【注意:布尔类型无法进行数学运算】

第二种:引用数据类型

【特别注意:只要不是八大基本数据类型,就一定是引用类型】

【目前只学习了一个】

String:字符串,可以存放多个字母

【代码演示:】

String 变量名="值";

【注意:1:String类型的值必须写进双引号,不做其他特殊要求】

------数据类型转换

类型自小至大排序为:

byte-->short(char)-->int-->long-->float-->double

【提示:数据类型转换分为以下几种:自动类型转换、强制类型转换和自动类型提升】

一:自动类型转换

发生在小类型给大类型赋值时(一定不存在风险)

代码演示:

大类型=小类型

二:强制类型转换

发生在强制将大类型的值赋值给小类型时【注意:这样会存在风险】

代码演示:

小类型=(小类型)大类型;

【注意;】

【1:大类型的值在小类型的取值范围内,不会出现数据异常;】

【2:大类型的值不在小类型的范围内,会出现数据异常;】

【3:小数转成整数时,会舍去小数位,既有可能出现数据丢失;】

【4:由于char类型没有负数取值,所以其他类型转为chae时,都需要类型强转;】

【5:boolean类型不参与数据类型转换;】

【6:任意数据加上双引号或者拼接双引号都会变成String类型】

------自动类型提升

自动类型提升只发生在数学运算时,当有大类型参与时,会触发类型提升,最终结果将会被提升为大类型

【注意:自动数据类型提升最低提升为int类型,最高提升为double类型】

------表达式

由一个或多个变量或者值通过运算符进行连接,最终可以得到一个结果,该通过运算符链接起来的式子称之为表达式。

------运算符

运算符分为为:

数学运算符

【+(加)、-(减)、*(乘)、/(除)、%(取余)】

 赋值运算符

【=(等于)、+=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、%=(取余等于)】

比较运算符

【<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、==(等于)、! =(不等于)】

【注意:比较运算符结果一定为boolean类型】

逻辑运算符

运算符含义运行原理
&&逻辑与表示并且,多方同时满足才会为true,有一方为false,结果就为false
||逻辑或表示或者,一方为true则为true,权威false才为false
逻辑非表示取反

【注意:衔接的必须是布尔表达式(结果为boolean类型的表达式)】

【特别注意:短路机制问题:只会存在逻辑运算符中】

【短路机制原理:当运算到可以奠定最终结果的表达式时,后续表达式将不再判断】

【短路运算符:&&和||,注意注意注意:&和|不是短路运算符】

一元运算符

运算符写法含义
++变量名++或者++变量名数值+1相当于n+=1
==变量名--或者--变量名数值-1相当于n-=1

注意:无论运算符在前还是在后,变量本身的值一定会进行发生变化】

【运算符在前,表达式的结果为变量计算之后的值】

【运算符在后,表达式的结果为变量计算之前的值】

三元运算符

代码演示:

布尔表达式 ? 结果1:结果2

注意:执行流程:当布尔表达式结果为true时,执行结果1,否则执行结果2】

【结果1和结果2可以是一个值也可以是表达式】

------扫描器-Scanner

【提示:类库中提供了Scanner工具类,可以辅助实现接收用户输入的数据】

使用步骤:

第一步:创建扫描器【代码演示】

java.util.Scanner 扫描器名=new java.util.Scanner(System.in);

第二步:提示用户输入内容【代码演示】

System.out.println("请输入查找内容");

第三步:创建变量接收用户输入的内容【代码演示】

数据类型 变量名=扫描器名.next数据类型();
String: 扫描器名.next();
int: 扫描器名.nextInt();
double: 扫描器名.nextDouble();
//注意:char:扫描器名.next().charAt(0);

【注意:扫描器对象创建之后可以反复使用】

----导包-import

导包的作用是一次性在源文件中指明某个或某些类的来源

【代码演示】

import 包名.类名

使用规则:

1:所在位置:第一个类的上方,package语句的下方

2:一次性导入某个或某些类之后,源文件中的类无需再代码中再次声明包(界面更简洁明了)

3:可以使用*(通配符)一次性引入某个包下所有的类

improt 包名.*;

4:*通配符只能引入直属的类,呜啊引入子包中的类

5:一个导包语句中*通配符只能存在一次

6:导包语句一个源文件中可以存在多个

------转义字符

转义字符的作用:

1:将特殊字符普通化

2:将普通字符特殊化

掌握的字符有:\n表示换行,\t表示一段制表符的距离,相当于tab键的效果

必须写双引号

--------分支和循环

程序执行过程中,有可能需要根据不同的结果执行不同的操作,该现象称之为分支结构

【每一次新的选择,都会有新的结果】

分支有以下几种

第一种:if分支

【代码演示】

if(布尔表达式){
//操作语句
}

第二种:if-else分支

【代码演示】

if(布尔表达式){
//if中的操作语句
}else{
//else中的操作语句
}

【注意:if-else分支:一定且只会执行一个操作语句】

第三种:多重if分支

【代码演示:】

if(布尔表达式1){
    //操作语句1
}else if(布尔表达式2){
    //操作语句2
}else{
    //else中的操作语句
}

【注意:】

【1:自上而下执行,】

【2:当执行到某个满足的分支时,剩余分支将不再执行】

【3:至多执行一个操作语句】

【4:只要逻辑完整,else-if的数量不做具体要求】

【5:else部分可以省略(但是为了保证分支的完整性,通常不会省略)】

第四种:嵌套分支

【代码演示:】

if(外层布尔表达式){
    if(内层布尔表达式1){
    //内层if操作语句
    }
}else{
    if(内层布尔表达式2){
        //内层if操作语句
    }

}

【注意:只要逻辑完整,对嵌套位置,嵌套类型,嵌套层数不做具体要求】

第五种:switch分支

switch分支适用于等值判断

【代码演示:】

switch(一个值或者一个具有具体值的表达式){
    case:值1;
    //操作语句
    break;
 case:值2;
    //操作语句
    break;
 case:值3;
     //操作语句
    break;
 default:
    //default操作语句
}

【注意:】

【1:case自上而下判断】

【2:当所有的case都不满足时,才会执行default】

【3:break的作用为强制结束分支剩余内容的执行】

【4:当某个case满足条件之后,剩余case将不再判断,但是代码块会继续执行】

【5:最后一个语句块不需要添加break,因为执行结束,switch会自然停止】

【6:多个case可以共用同一个操作语句(这是因为break的穿透效果)】

【7:所有switch分支能够实现的操作if分支一定可以,反之不行】

【【最重要的一点:switch只能判断byte,char,short,int,string(JDK7)这些数据类型】】

------局部变量

局部变量是定义在方法内部的变量

作用范围:从定义行开始,到直属代码块{}结束

命名冲突:在同一作用域下不可重名

------循环

循环的特点:可以使操作语句再满足某个条件的前提下同时执行多次,解决代码冗余问题

for循环

【代码演示:】

for(循环初始值;循环条件;迭代语句){
        //操作语句
}

基础知识讲解:

循环初始值:从几开始的循环

循环条件:在那个范围内可以继续循环

迭代语句:对循环初始值做有规律的变化

while循环

【代码演示:】

while(循环条件-布尔表达式){
        //操作语句
}

while循环特点:

先判断,再执行,执行次数为0~n次;

while和for的区别

1:for循环更适用于循环次数和烦诶确定的情况

2:while更适用于循环次数和范围不确定的情况

------流程控制

流程控制关键字可以在循环执行的过程中改变循环的执行流程

burak

作用:跳出所有循环,是当前循环停止

continue

作用:跳过本次循环,开始下一次

死循环:当循环条件永远满足,操作语句永远可以执行时,就会形成死循环,

死循环+break(条件跳出)时while循环中很常见的一种思路

区别:

1:作用不同:break停止所有循环,continue时停止本次开始下次循环

2:应用场景不同:break可以作用与swich分支和循环,continue只能作用域循环

do-while循环

【代码演示:】

do{
//操作语句
}while(循环条件)

执行特点:

先执行,再做判断,,执行次数为1~n次

whils和do-while的区别

1:while先判断再执行,执行次数为0~n次

2:do-while先执行,再判断,执行次数为1~n次

循环嵌套:

在图形输出中,外层循环代表行,内层循环代表列

执行流程:外层循环执行一次,内层循环执行一遍

break和continue只能作用于直属的循环层次

只要逻辑完整,镶嵌层数不做要求,但是通常不超过两层(镶嵌太多会导致性能受到影响)

------函数

函数:就是一段具有特定功能的代码块,特点时可以在不同的位置多次调用和执行,可以解决代码冗余问题

函数语法:

【代码演示:】

访问修饰符 返回值类型 函数名(形参列表){
        //操作语句
}


//完整的函数方法
public static void 函数名(){
        操作语句
}

函数方法所在位置:类的内部,其他函数的外部,与主函数平级

调用方式:

自定义函数想要执行,必须经过调用

【代码演示:】

函数名(实参列表);
函数名();

调用和执行的位置:

想在哪里执行就在哪里调用,【哪里不会点哪里】

参数

表示函数中不确定的因素

分为:1:形参,2:实参

形参:

形式上的参数,特点是没有具体值,只有声明部分,写在函数的声明处的小括号内

实参:

实际上的参数,特点是一个具有具体值或者拥有具体结果的表达式,写在函数调用处的小括号里

一个参数

【代码演示:】

形参:
public static void 函数名(数据类型,参数名){
        //操作语句
}
实参:
函数名(值);

注意:当存在形参时,必须使用实参给形参赋值】

多个参数

【代码演示:】

public static void 函数名(数据类型1 参数名1;数据类型2 参数名2;数据类型n 参数名n){
        //操作语句
}
调用:函数名(值1,值2,值n,)

实参列表必须于形参列表保持一致

【【参数列表:数据类型、个数、顺序】】

形参不可同时声明

------返回值

返回值是一个具体值,特点为可以向上(调用者)返回

【代码演示:】

public static 返回值类型 函数名(形参列表){
        //操作语句
        return 值;
}

【注意:】

1:void没有返回值,无需向上返回数

2:如果函数声明的有返回值,则内部必须通过return语句降至向上返回

3:当调用一个拥有返回值的函数时,调用者必须做出后续处理,否则返回值没有意义

定义变量接收返回值,在操作变量

【代码演示:】

数据类型 变量名 =函数名(实参列表);

变量的数据类型应与函数声明的返回值类型保持一致, 

直接操作返回值

4:同一直属作用范围内,return语句下方不可存在其他有效语句否则将会无法执行

5:如果函数中存在分支,则比徐保证每种情况下都有可被执行的return语句

6:当分支情况较多时为了方便书写和阅读,建议使用"三部曲";

        1:在函数最上方定义用来返回的变量,并赋予初始值

        2:在函数操作语句中根据不同的情况为变量重新赋值

        3:在函数的最下方return该变量

------函数高级

函数的嵌套调用

1:函数嵌套调用时,调用顺序与执行结束的顺序相反

2:当调用的函数执行结束,调用者才有可能执行结束

3:只要逻辑完整,嵌套层数不做要求

JVM内存结构

1:JVM内存主要有栈和堆组成【注意:除了栈和堆,还有其他元素,我还没有学到】

2:栈的特点:先进后出(FILO),永远操作栈顶元素

3:每当函数调用时,都会生成一条对应的栈帧,栈帧的执行特点决定了函数嵌套调用时的执行特点

------递归

1:自己调用自己,或者函数之间循环调用

2:当进行递归调用时,会持续生成栈帧,如果没有跳出条件,则最终栈帧会将内存撑满,程序则会强制终止

3:return;可以强制停止程序剩余内容的执行

可以作用与递归,在递归过程中满足某个条件时,通过return:截止递归

4:能够使用递归实现的操作都可以用循环代替

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值