Java语言基础(day02)

目录

 标识符

 关键字

 字面值

 变量

 数据类型

 转义字符  \  

 整型

 浮点型

 布尔型

 运算符

 控制语句

 循环结构

 方法

 完整代码:

 标识符


    /*
    标识符可以标识:类名,方法名,变量名,接口名,常量名
    标识符命名规则:只能由数字,字母,下划线,美元符号组成(不能有空格),不能以数字开头,严格区分大小写,关键字不能做标识符,理论上无长度限制
    标识符命名规范:最好见名知意,遵守驼峰命名方式(即一高一低):SystemService,UserService等,类名,接口名首字母大写,后面每个单词首字母大写
    变量名,方法名首字母小写,后面每个单词首字母大写,常量名全部大写
     */


 关键字

(都是小写的)
    /*
    public,static,void,if,for,while,do,default,
    byte,short,int,long,float,double,boolean,char,
    private,protected,switch,true,false,throw,throws,
    try,catch。。。。。。
     */
   

 字面值


    /*
    10,100
    3.14
    “abc”
    ‘a’
    true,false
    所有字符串型必须由“”
    所有字符型必须由‘’
     */


  变量


    /*
    变量包含三部分:数据类型,名称,字面值(数据)
    变量是内存中存储元素的最基本单元
    数据类型:不同的数据有不同的数据类型,不同的数据类型底层会分配不同的大小空间
    声明/定义变量:数据类型 变量名
    变量赋值:变量名=字面值(先运算等号右边的表达式然后赋值给等号左边的变量)
    访问变量的两种方式:读取变量中保存的具体数据:get获取
                                       修改变量中保存的具体数据:set设置
    在同一个作用域中变量名不能重名,但变量可以重新赋值
    关于变量的分类:局部变量:在方法体中声明的变量
                                成员变量:在方法体外,类体之内声明的变量
    类体中不能编写java语句(声明变量除外)
     */


  数据类型


    /*
    数据类型的作用是JVM在运行程序的过程中给该数据分配多大的内存空间
    数据类型的分类:基本数据类型:四大类,八小种:第一类:整数型 byte,short,int,long
                                                                                    第二类:浮点型 float,double
                                                                                    第三类:布尔型 boolean
                                                                                    第四类:字符型 char
                 字符串不属于基本数据类型(String),属于引用数据类型:“abc”
                 基本数据类型占用空间大小:byte      1(字节)    取值范围:-128-127  可表示256个不同的数字
                                                              short     2
                                                              int       4
                                                              long      8
                                                              float     4
                                                              double    8
                                                              boolean   1
                                                              char      2
                 计算机在任何情况下都只能识别二进制:例:100100101010
                 八种基本数据类型中char表示的是现实中的文字,文字和计算机的二进制不存在转换关系的,
                 因此,人提前制定好文字和计算机二进制编码的转换关系,这种关系被称为“字符编码”。
                 最先出现的字符编码(支持英文)是ASCII码,当解码和编码本是同一套对照表时会出现乱码
                 java语言源代码采用的是unicode编码方式,所以标识符可以写中文
                 引用数据类型:
     */

  转义字符  \  


   所以不能直接打印输出‘\’
    /*
      println表示输出完后要换行,print表示输出完后不换行
      例:'\n'属于换行符,属于char数据类型
         '\t'属于制表符(tab),在两个字母之间会有大空格
         '\\'第一个反斜杠是转义字符,能将第二个反斜杠转义成普通的字符并输出
     */

   

  整型


    /*
     java中编写整数型字面值一般有三种表示方式:
     1.十进制:一种缺省默认的方式
     2.八进制:要在开头加上0
     3.十六进制:在开头加上0x
     数据类型    取值范围
     byte      -128--127
     short    -32768--32767
     int     -2147483648-2147483647
     long
     计算机二进制三种表现形式
     原码
     反码
     补码
     正数的补码和原码相同
     负数的补码:负数绝对值对应的二进制码,所有二进制取反再加一
     */


 浮点型


    /*
    float单精度(4个字节)
    double双精度(8个字节精度较高)
    double的精度太低,不适合做财务软件,财务涉及到钱的问题要求精度较高,
    所以有更准确的数据类型,只不过这种数据类型不是基本数据类型而是引用数据类型:java.math.BigDecimal
    java程序员基于一套强大的类库进行开发,
    java的SE类库字节码:"C:\Program Files\Java\jdk-14.0.1\lib\jrt-fs.jar"
    java的SE类库的源码:"C:\Program Files\Java\jdk-14.0.1\lib\src.zip"
    例如(String[] args)使用的就是String.class字节码文件
    在java中所有float型字面值默认当做double类型来处理,要想把字面值当做float类型处理,必须要在字面值之后加上F
     */


 布尔型


    /*
    在java语言中boolean类型只有两个值:true,false,没有其他值
    底层存储boolean只占一个字节,因为false的底层是0,true的底层是1
    八种基本数据类型转换规则:
    除布尔类型外,其他七中数据类型可互相转换
    小容量向大容量转换称为自动类型转换
    容量从小到大排名:byte,short,int,long,float,double,char
    char c=97(存在自动类型转换)
    大容量转换为小容量需要强制类型转换,加上强制类型转换符,才能编译通过,在运行阶段会损失精度
    当整数字面值没有超过byte,short,char的取值范围可直接赋值给byte,short,char类型的变量
    byte,short,char混合运算时,先转化为int数据类型再做运算
    多种数据类型混合运算时,先转化为容量最大的数据类型再做运算
     */


 运算符


    /*
    算术运算符:
    +  加号
    -  减号
    *  乘号
    /  除号
    %  求余数(取模)
    ++  自加1
    --  自减1
    关系运算符:
    >,<,>=,<=,==,!=  (==是关系运算符,=是赋值运算符)
    关系运算符的结果一定是布尔类型:true/false,比较变量中保存的值的大小
    逻辑运算符:要求两边的算子都是布尔类型,结果也必须是布尔类型
    &  逻辑与(并且)  两边都是true才为真
    |  逻辑或(或者)  两边只要有一个true就是真
    !  逻辑非  取反
    ^  逻辑异或  两边算子不一样就是真
    &&  短路与  和逻辑与结果相同,存在短路现象
    ||  短路或  和逻辑或结果相同,存在短路现象
    字符串连接运算符:
    “+”运算符在java中有两种作用:
    加法运算符:加号两边都是数字才是加法运算
    字符串连接运算:两边的数据有一个是字符串类型,一定进行字符串连接运算,运算结果还是字符串类型
    三元运算符:
    语法规则:布尔表达式?表达式1:表达式2(看布尔表达式为真时,把表达式1作为表达式运行结果,为假则把表达式2作为结果)
    赋值类运算符:
    基本赋值运算符:=
    扩展的赋值运算符:扩展类的赋值运算符不改变运损结果类型
    +=   byte i=5   i+=5 -------  i=(byte)(i+5)一开始是byte型最后也应该强转为byte类型
    -=
    *=
    /=
    %=
     */


 控制语句


    /*
    选择结构:
    if,if...else
    if语法:
    第一种:
    if(布尔表达式){
          java语句
           ......
    }
    第二种:
    if(布尔表达式){
         java语句
    }else{
         java语句
    }
    第三种:
    if(布尔表达式){
        java语句
    }else if(布尔表达式){
        java语句
    }else if(布尔表达式){
        java语句
    }
    第四种:
    if(布尔表达式){
        java语句
    }else if(布尔表达式){
        java语句
    }else if(布尔表达式){
        java语句
    }else{
        java语句
    }
    switch
    switch语法:拿括号中的数据和case中的数据进行匹配,匹配成功执行冒号后的java语句,
    遇到break整个switch就结束了,假设第一个case中没有break,将不在判断第二个case是否匹配,
    直接继续执行第二个case中的java语句,这种被称为case穿透现象
    相同的Java语句在不同的case条件下可以合并
    例:case语句合并
    int i=10;
    switch(i){
          case 1:case 2:case 3:case 10:
               java语句;
    }
    switch(int或String类型的字面值或变量){
    case int或String类型的字面值或变量:
         java语句;
         ...
         break;
    case int或String类型的字面值或变量:
         java语句;
         ...
         break;
    case int或String类型的字面值或变量:
         java语句;
         ...
         break;
    default:
         java语句;
         ...
    }


 循环结构


    for
    for循环语法:
    for(初始化表达式;布尔表达式;更新表达式){
           Java语句;
    }
    执行过程:初始化表达式,布尔表达式,更新表达式都不是必须的,但两个分号一定要写,
    初始化表达式一定是最先执行的,并且只执行一次,布尔表达式必须是true/false,
    先执行初始化表达式,只执行一次,
           再判断布尔表达式是True/false,
               若为true,执行java语句,
                 执行更新表达式,
                 再判断布尔表达式真假,以此往复
               若为false,循环结束
    while
    while语法:
    while(布尔表达式){
          循环体
    }
    循环原理:先判断布尔表达式的结果,若为真执行循环体,再判断布尔表达式结果,再执行循环体,再判断,再执行循环体......
    do....while
    do....while语法:
    do{
      循环体;
    }while(布尔表达式);
    循环原理:先执行循环体,再判断布尔表达式为真,再执行循环体,再判断,再执行循环体,直到为假....
    控制循环的语句:
    break
    break语法:
    可单独为一句java语句,可用在switch语句中,也可使用在循环语句中,
    当循环到我们所需要的数据后即可以终止循环,这样可以减少资源的消耗
    continue
    continue语句:
    表示继续,也可以continue关键字加分号构成的Java语句,
    主要出现在循环语句中,用来控制循环语句的执行,表示当前本次循环结束,执行下一次循环继续执行
    其他用法:continue+循环名称表示从那次循环开始执行

                                                                  方法内存分配形式图
     

  方法


    //类体:
    建议在一个Java文件中只定义一个class,即之只定义一个类名
    
    /*
    计算三个需求其实就是计算一个需求
    计算两个int类型的数据之和
    只不过每一次参与的数据不同
    则可以用到方法
    在Java中有这样一种机制
    某个功能代码只需要写一遍
    要使用这个功能,只需要给这个功能传递具体的数值
    这个功能完成之后返回一个具体地结果
    这样代码就可以重复利用,提高代码的复用性
    方法的本质:就是一段代码片段,这段代码片段可以完成相应的功能,并且可以被重复使用
    方法定义在类体当中,一个类体中可以定义多个方法,方法编写的位置没有先后之分,可以随意
    方法体中不能再定义方法,方法由Java语句编写而成,方法体中的代码遵循自上而下顺序执行
    1.方法的基础语法
    方法的定义,语法结构:
    [修饰符列表] 返回值类型 方法名 (形式参数表列){
                方法体;
    }
     修饰符列表:先统一写成public static(以后讲)
     方法修饰符列表中有static关键字时,怎么调用这个方法?
     对于方法的修饰符列表中带有static关键字的方法,调用时,类名可以不写
     若定义另一个类名A时,则在调用时即调用其他类中的方法,不是本类,必须加上类名.方法名,类名不能省,
           类名.方法名(实际参数列表);
     返回值类型:一个方法可以完成一个特定的功能,
     这个功能结束时会返回一个特定的结果,执行结果可能是一个具体存在的数据,
     该数据就是返回值,数据都是有类型的,此处指定的的数据的具体类型,
     包括所有的基本数据类型和引用数据类型,若没有具体的返回值类型就写void
     若不是void类型,则在方法体中必须写出return+值,并保证该值类型必须与返回值类型相同,否则就会报错
     若是void类型,在方法体中不能写return+值这样的语句,但可以写return;(作用:强行终止当前执行的方法)这样的语句
     只要带有return关键字的语句执行,return语句所在的方法结束
     方法名:
     只要是合法的标识符
     最好见名知意
     最好是动词
     方法名首字母要小写,后面每个单词首字母大写,遵循驼峰书写
     形式参数列表:
     形参是局部变量:int a ,double b等等
     形参的个数可以是多个
     多个形参间用逗号隔开
     形参中期关键作用的就是形参的数据类型,形参的名字就是局部变量的名字
     方法在调用的时候要求形参和实参的个数和数据类型对应相同
     类型不同的时候要求能够进行相应的类型转换(自动类型转换或强制类型转换)
     深入return语句:
     带有return关键字的语句只要执行,所在的方法执行结束,
     在同一个作用域下,return语句不能编写任何代码,因为这些代码所愿执行不到

     方法在执行过程中,在JVM中的内存是如何分配的,内存是如何变化的?(难点)看笔记
     1.方法只定义,不调用,是不会执行的,并且在JVM中不会给该方法分配运行所属的内存空间,只有在调用时,才会分配运行内存空间
     2.在JVM内存主要划分为3块内存空间:
     方法区内存
     堆内存
     栈内存
     3.方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候将其放到了方法区中,
     所以JVM的3块内存空间中方法区空间中最先有数据,存放了代码片段,代码片段在方法区内存中虽然只有一份,
     但是却可以重复调用,调用时会分配所属的活动场所,活动场所在栈内存中分配,所以,栈内存中分配方法运行的所属内存空间
     4.方法在调用时瞬间,会给该方法分配内存空间,此时在栈中将发生压栈动作,方法执行结束后,给该方法分配的内存空间会全部释放,此时发生弹栈动作
     5.局部变量在方法体中声明,局部变量运行阶段内存在栈中分配
     方法在调用的时候,在传递参数时,实际上传递的是变量中保存的那个值,而非变量

    2.方法的重载机制overload
    功能相似的时候,方法的名字可以相同,考虑方法重载机制虽然调用的不同方法,但却给人感觉在调用一个方法,代码美观
    功能不相似的时候,尽可能让方法名不同
    方法重载运用的条件:
    1.在同一个类当中
    2.方法名相同
    3.参数列表不同:包括局部变量数量不同,顺序不同(int在前,double在后等等),类型不同(一个int类型,一个double类型)
    4.用两个不同的返回值类型不能区分两个方法即不能使用方法重载,局部变量中的变量名也不能区分两个方法即不能使用方法重载机制
    5,。方法重载机制只和方法名和参数列表有关,和返回值类型,修饰符列表无关

    3.方法的递归调用
    自己调用自己,递归必须有结束条件,没有结束条件一定会发生栈内存溢出
    递归可以不使用尽量别用,除非必须用到递归,比如目录拷贝


完整代码:

https://github.com/DeveloperWhite/Java

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值