Java基础知识

DOS命令

启动: Win+R

切换盘符 盘符名称:

进入文件夹 cd 文件夹名称

进入多级文件夹 cd 文件夹1\文件夹2\文件夹3

返回上一级 cd …

直接返回根路径 cd \

查看当前内容 dir

清屏 cls

退出 exit

JAVA语言开发环境搭建

  • JVM(Java Virtual Machine):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java最具吸引力的特性之一。我们编写的Java代码,都运行在JVM之上。
  • JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库
  • JDK(Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具。
  • 跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以在任何的操作系统上,这个特性称为Java语言的跨平台性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。

关键字和标识符

Java关键字

  • abstractcontinuefornewswitch
    assertdefaultgotopackagesynchronized
    booleandoifprivatethis
    breakdoubleimplementsprotectedthrow
    byteelseimportpublicthrows
    caseenuminstanceofreturntransient
    catchextendintshorttry
    charfinalinterfacestaticvoid
    classfinallylongstrictfpvolatile
    constfloatnativesuperwhile

Java标识符

  • 标识符:是指在程序中,我们自己定义内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。

  • 命名规则硬性要求

    • 标识符可以包含英文字母26个(区分大小写)0-9数字$(美元符号)_(下划线)

    • 标识符不能以数字开头。

    • 标识符不能是关键字。

  • 命名规范软性建议

    • 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。例:HelloWorld。

    • 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。例:helloWorld。

    • 方法名规范:同变量名。

Java常量

常量:是指在Java程序运行期间固定不变的数据。

类型含义数据举例
整数常量所有的整数0,1,548,-9
浮点数常量所有的小数0.1,0.1,2.11,-5.1
字符常量单引号引起来,只能写一个字符,必须有内容‘a’,‘好’,’ ’
字符串常量双引号引起来,可以写多个字符,也可以不写“A”,“hello”,“你好”,""
布尔常量只有两个值true,false
空常量只有一个值null

Java数据类型

数据类型分类

  • 基本数据类型:包括整数,浮点数,字符,布尔
  • 引用数据类型:包括,数组,接口
  • 包装类:Byte,Short,Integer,Long,Float,Double,Character,Boolean。

基本数据类型

四类八种基本数据类型:

数据类型关键字内存占用取值范围
字节型byte1个字节-128~127
短整型short2个字节-32768~32767
整型int(默认)4个字节-231~231-1
长整型long8个字节-263~263-1
单精度浮点型float4个字节1.4013E-45~3.4028E+38
双精度浮点型double(默认)8个字节4.9E-324~1.7977E+308
字符型char2个字节0~65535
布尔类型Boolean1个字节true false

注意事项:

  1. 字符串不是基本类型,而是引用类型。
  2. 浮点型可能只是一个近似值,并非精确的值。
  3. 数据范围与字节数不一定相关,例如float数据范围比long更广泛,但是float是4字节,long是8字节。
  4. 浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

Java变量

变量:Java程序运行期间,内容可以发生改变的量。

创建一个变量并且使用的格式:

  • 数据类型 变量名称;//创建了一个变量

  • 变量名称 = 数据值;//赋值,将右边的数据值,赋值给左边的变量。

  • 数据类型 变量名称 = 数据值;//创建一个变量的同时,立刻放入指定的数据值。

变量的注意事项:

  1. 如果创建多个变量,那么变量之间的名称不可以重复。
  2. 对于floatlong类型来说,字母后缀F和L不能丢掉。
  3. 如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。
  4. 没有进行赋值的变量,不能直接使用,一定要赋值后才能使用。
  5. 变量使用不能超过作用域的范围。【作用域:从定义变量的一行开始,一直到直接所属的大括号结束为止】
  6. 可以通过一个语句来创建多个变量。例如:int a=10,b=20,c=30;

数据类型转换

当数据类型不一样时,将会发生数据类型转换!

  • 自动类型转换(隐式)

    1.特点:代码不需要进行特殊处理,自动完成

    2.规则:数据范围从小到大(与字节数不一定相关 例如: float 4字节>long 8字节)

  • 强制类型转换(显式)

    1.特点:代码需要进行特殊的格式处理,不能自动完成

    2.格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据

  • 注意事项

    1.强制类型转换一般不推荐使用,因为有肯呢个发生精度损失、数据溢出

    2.byte/short/char这三种类型都可以发生数学运算,例如加法“+”

    char zifu1='A';
    System.out.println(zifu1+1);//66,A被当成65进行处理
    

    3.byte/short/char这三种类型在运算的时候,首先都会被提升成为int类型,然后再计算

    byte n1=40;
    byte n2=50;
    byte result=n1+n2;//报错 n1和n2会变成int类型 不能用byte类型来接收
    int result=n1+n2;//这样不会报错
    

    4.boolean类型不能发生数据类型转换

运算符

运算符:进行特定操作的符号。例如:+

表达式:用运算符连起来的式子叫做表达式。例如:20+5、a+b

1.算数运算符

算数运算符包括:
+加法运算,字符串连接运算
-减法运算
*乘法运算
/除法运算
%取模运算,两个数字相除取余数
++--自增自减运算

规则:首先计算得到表达式的结果,然后再打印输出这个结果

System.out.println(20+30);//两个常量之间可以进行数学运算
int a=20;
int b=30;
System.out.println(a-b);//两个变量之间可以进行数学运算
System.out.println(a*10);//变量和常量可以混合使用

注意事项:一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

int x=10;
double y=x+2.5
System.out.println(y);//结果 12.5

算数运算符中的加号“+”有三种用法:

1.对于数值来说,那就是加法

2.对于char类型来说,在计算之前,char会被提升为int类型,然后计算

3.对于字符串String来说,加号代表字符串连接操作

任何数据类型和字符串进行连接的时候,结果都会变成字符串

System.out.println("hello"+"World");//结果:helloWorld
String str="java";
System.out.println(str+20);//结果:java20
System.out.println(str+30+20);//结果:java3020
System.out.println(str+(20+30));//结果:java50

自增运算符:++

自减运算符:–

基本含义:让一个变量+1,或者让一个变量-1

使用格式:写在变量名称之前,或者变量名称之后 例如 ++num num++

使用方式:

1.单独使用:不和其他任何操作混合,自己独立成为一个步骤

2.混合使用:和其它操作混合,例如与赋值混合,或者与打印操作混合等等

使用区别:

1.单独使用的时候,前++和后++没有任何区别。

int num=10;
System.out.println(num);//
++num;
System.out.println(num);//11
num++;
System.out.println(num);//12

2.混合使用时

​ A.如果是【前++】,那么变量【立刻+1】,然后拿着结果进行使用(先加后用)

​ B.如果是【后++】,那么先使用变量本来的数值,然后【让变量+1】(先用后加)

int num2=20;
System.out.println(++num2);//21
System.out.println(num2);//21

int num3=30;
System.out.println(num3++);//30
System.out.println(num3);//31

注意事项:只有变量才能使用自增、自减。常量不可发生改变,所以不能使用。

2.赋值运算符

赋值运算符分为:

  • 基本赋值运算符:就是一个等号“=”,代表将右侧的数据交给左侧的变量(例如:int a=30)

  • 复合赋值运算符:

    1.+= a+=3 相当于 a=a+3

    2.-= b-=4 相当于 b=b-4

    3.*= c *=5 相当于 c=c * 5

    4./= d /=6 相当于 d=d / 6

    5.%= e%=7 相当于 e=e %7

注意事项:

  1. 只有变量才能使用赋值运算符,常量不能进行赋值
  2. 复合赋值运算符其中隐含了一个强制类型转换
byte num=30;
num+=5;//num=num+5 相当于 num=byte+int 然后 num=int+int num=(byte)int
System.out.print(num);//35

3.比较运算符

比较运算符
==比较符号两边数据是否相等,相等结果是true
<比较符号左边的数据是否小于右边的数据,如果小于结果是true
>比较符号左边的数据是否大于右边的数据,如果大于结果是true
<=比较符号左边的数据是否小于或者等于右边的数据,如果小于或者等于结果是true
>=比较符号左边的数据是否大于或者等于右边的数据,如果大于或者等于结果是true
!=不等于符号,如果符号两边的数据不相等,结果是true

注意事项:

  1. 比较运算符的结果一定是一个Boolean值,成立就是true,不成立就是false
  2. 如果进行多次判断,不能连着写(例如 1< a < 3)

4.逻辑运算符

逻辑运算符
与(并且) &&两个条件都是true,才是true,否则就是false
或(或者) ||至少一个是true,就是true,两个都是false,才是false
非(取反) !本来是true,变成false;本来是false,变成true

注意事项:

  1. 与“&&”,或“||”,具有短路效果;如果根据左边已经可以判断得出最终结果,那么右边的代码将不再执行,从而节省一定的性能
  2. 逻辑运算符只能用于Boolean值
  3. 与和或需要左右各自有一个Boolean值,但是取反只要有唯一的一个Boolean值即可
  4. 与和或两种运算符,如果有多个条件,可以连续写(例如:1<a && a<3)

5.三元运算符

  • 一元运算符:只需要一个数据就可以进行操作的运算符(例如:取反 !、自增 ++、自减 --)

  • 二元运算符:需要两个数据才可以进行操作的运算符(例如:加法 +、赋值 =)

  • 三元运算符:需要三个数据才可以进行操作的运算符

    1. 格式:数据类型 变量名称 = 条件判断?表达式A:表达式B

    2. 流程:(1)判断条件是否成立

      ​ (2)如果成立为true,那么将表达式A的值赋值给左侧的变量

      ​ (3)如果不成立为false,那么将表达式B的赋值给左侧的变量

      int a=10,b=20;
      int max=a>b?a:b;
      System.out.print(max);//20
      

注意事项:

  1. 必须同时保证表达式A和表达式B都符合左侧数据类型的要求

    int max=3>4?2.5:10;//错误写法
    
  2. 三元运算符的结果必须被使用

    a>b?a:b;//错误!不是语句
    

方法入门

  • 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

  • 格式:

    修饰符 返回值类型 方法名 (参数列表){
        方法体
    return ;
    }
    
  • 定义格式解释:

    • 修饰符: 目前固定写法 public static
    • 返回值类型: 目前固定写法 void ,其他返回值类型在后面讲解
    • 方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法
    • 参数列表: 目前无参数, 带有参数的方法在后面讲解
    • 方法体:大括号中可以包含任意条语句
    • return:方法结束。因为返回值类型是void,方法大括号内的return可以不写

注意事项:

  1. 方法的定义先后顺序无所谓
  2. 方法的定义不能产生嵌套包含关系
  3. 方法定义好了之后,不会执行,如果要执行 一定要进行方法的【调用】
  • 调用方法格式: 方法名称();

流程控制

1.顺序结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpF4RXCq-1601351117699)(D:\Desktop\双体系\新建文件夹\01-顺序结构的流程图.png)]

2.选择结构

  • if语句的第一种格式:if
if(关系表达式){
    语句体;
}
  • 执行流程
    • 首先判断关系表达式看其结果是true还是false
    • 如果是true就执行语句体
    • 如果是false就不执行语句体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I9QaUJv7-1601351117702)(D:\Desktop\双体系\新建文件夹\02-单if语句的流程图.png)]

  • if语句第二种格式:if…else
if(关系表达式){
    语句体1;
}else{
    语句体2;
}
  • 执行流程
    • 首先判断关系表达式看其结果是true还是false
    • 如果是true就执行语句1
    • 如果是false就执行语句2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k0lesXQ-1601351117704)(D:\Desktop\双体系\新建文件夹\03-标准if-else语句的流程图.png)]

  • if语句第三种格式:if…else if…else
if(判断条件1){
    执行语句1;
}else if(判断语句2){
    执行语句2;
}
...
else if(判断条件n){
    执行语句n;
}else{
    执行语句n+1;
}
  • 执行语句
    • 首先判断关系表达式1看其结果是true还是false
    • 如果是true就执行语句体1
    • 如果是false就继续判断关系表达式2看其结果是true还是false
    • 如果是true就执行语句体2
    • 如果是false就继续判断关系表达式…看其结果是true还是false

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vNzPYTr-1601351117706)(D:\Desktop\双体系\新建文件夹\04-扩展if-else语句的流程图.png)]

3.选择语句

  • switch语句格式:
switch(表达式){
    case 常量1:
        语句体1;
        break;
    case 常量2:
        语句体2;
        break;
        ...
     default:
        语句体n+1;
        break;
}
  • 执行流程
    • 首先计算出表达式的值
    • 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束
    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉

switch使用注意事项:

  1. 多个case后面的数值不可以重复

  2. switch后面小括号中只能是一下数据类型:{

    基本数据类型:byte/short/char/int

    引用数据类型:String字符串/enum枚举

    }

  3. switch语句格式可以很灵活,前后顺序可以颠倒,而且break语句还可以省略”匹配到哪一个case就从哪一个位置向下执行,直到遇到break或者整体结束为止“

4.循环语句

  • for循环语句格式:
for(初始化表达式1:表达式2:表达式3){
    循环体4
}
  • 执行顺序
    • 执行顺序:1234>234>234…2
    • 1负责完成循环变量初始化
    • 2负责判断是否满足循环条件,不满足就跳出循环
    • 3具体执行的语句
    • 4循环后,循环条件所涉及变量的变化情况[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccMmygNq-1601351117708)(D:\Desktop\双体系\新建文件夹\05-for循环的流程图.png)]

循环结构基本组成部分:

  1. 初始化语句:在循环开始最初执行,而且只做唯一一次
  2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出
  3. 循环体:重复要做的事情内容,若干行语句
  4. 步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次
  • while循环语句格式:
初始化表达式(1)
    while(布尔表达式(2)){
        循环体(3)
            步进表达式(4)
    }
  • 执行流程

    • 执行顺序:1234>234>234…2不满足为止
    • 1负责完成循环变量初始化
    • 2负责判断是否满足循环条件
    • 3具体执行的语句
    • 4循环后,循环变量的变化情况
  • do…while循环格式

初始化表达式1
    do{
        循环体3
            步进表达式4
    }while(布尔表达式2);
  • 执行流程
    • 执行顺序:134>234>234…2不满足为止
    • 1负责完成循环变量初始化
    • 2负责判断是否满足循环条件,不满足则跳出循环
    • 3具体执行语句
    • 4循环后,循环变量的变化情况

Java内存划分五个部分

  1. 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。

    ​ 局部变量:方法的参数,或者是方法{}内部的变量

    ​ 作用域:一旦超出作用域,立刻从栈内存当中消失

  2. 堆(Heap):凡是new出来的东西,都在堆当中。

    ​ 堆内存里面的东西都有一个地址值:16进制

    ​ 堆内存里面的数据,都有默认值,规则如下:

    ​ 如果是整数:默认值为0

    ​ 如果是浮点数:默认值为0.0

    ​ 如果是字符:默认值为’\u0000’

    ​ 如果是布尔:默认值为false

    ​ 如果是引用类型:默认值为null

  3. 方法区(Method Area):存储.class相关信息,包含方法的信息

  4. 本地方法栈(Native Method Stack):与操作系统相关

  5. 寄存器(Pc Register):与cpu相关

134>234>234…2不满足为止

  • 1负责完成循环变量初始化
  • 2负责判断是否满足循环条件,不满足则跳出循环
  • 3具体执行语句
  • 4循环后,循环变量的变化情况

Java内存划分五个部分

  1. 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。

    ​ 局部变量:方法的参数,或者是方法{}内部的变量

    ​ 作用域:一旦超出作用域,立刻从栈内存当中消失

  2. 堆(Heap):凡是new出来的东西,都在堆当中。

    ​ 堆内存里面的东西都有一个地址值:16进制

    ​ 堆内存里面的数据,都有默认值,规则如下:

    ​ 如果是整数:默认值为0

    ​ 如果是浮点数:默认值为0.0

    ​ 如果是字符:默认值为’\u0000’

    ​ 如果是布尔:默认值为false

    ​ 如果是引用类型:默认值为null

  3. 方法区(Method Area):存储.class相关信息,包含方法的信息

  4. 本地方法栈(Native Method Stack):与操作系统相关

  5. 寄存器(Pc Register):与cpu相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值