zoukankan      html  css  js  c++  java
  • java基础语法

    java基础语法

    计算机存储单元:

    • 字节是计算机中最小存储单元
    • 8个bit(二进制位<0或1>)表示为一个字节,(写成1 Byte或1 B)
      • 1 Byte = 8 bit
      • 1 KB = 1024 Byte
      • 1 MB = 1024 KB
      • 1 GB = 1024 MB 
      • 1 TB = 1024 GB
      • 1 PB = 1024 TB
      • 1 EB = 1024 PB
      • 1 ZB = 1024 EB

    JDK、JRE与JVM:

    • JVM:java虚拟机,是运行java程序的假想计算机,是java程序的运行环境。编写的java代码都运行在JVM之上。
    • JRE(Java Runtime Environment):是java程序的运行时环境,包含JVM和运行时所需要的核心类库。
    • JDK(Java Development Kit):是java程序开发包,包含JRE和开发使用的工具。

    关键字&标识符

      关键字的特点:

      • 完全小写的字母
      • 在增强版的记事本当中(例如notepad++),有特殊颜色

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

      • 命名规则:(硬性要求)
        • 标识符可以包含英文字母26个(区分大小写)、0-9、$(美元符号)、和_(下划线)
        • 标识符不能以数字开头
        •  标识符不能是关键字
      • 命名规范:(软性建议)
        • 类名规范:首字符大写,后面每个单词首字母大写。(大驼峰式)
        • 变量名规范:首字母小写,后面每个单词首字母大写。(小驼峰式)
        • 方法名规范:同变量名

    常量&变量

      常量:在程序运行期间,固定不变的量。

      • 常量的分类
        • 字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:"abc"、"123"。
        • 整数常量:直接写上的数字,没有小数点。例如:100、0、-250。
        • 浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0。
        • 字符常量:凡是用单引号引起来的单个字符,叫做字符常量。例如:'A'、'b'、'9'、'中'。
        • 布尔常量:只有两种取值,true、false。
        •  空常量:null。代表没有任何数据。

      数据类型:

      • 基本数据类型:
        • 整数型 byte short int long
        • 浮点型 float double
        • 字符型 char
        • 布尔型 boolean
      • 引用数据类型:
        • 字符串、数组、类、接口、Lambda

      变量:程序运行期间,内容可以发生改变的量。<装数据的容器>

      注意事项:

      • 浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。
      • 如果创建多个变量,那么变量之间的名称不可以重复。
      • 没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用。
      • 变量使用不能超过作用域的范围。【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。

    数据类型转换

      自动类型转换(隐式):

      • 特点:代码不需要进行特殊处理,自动完成。
      • 规则:数据范围从小到大。如:byte --> int

      强制类型转换(显式):

      • 特点:代码需要进行特殊的格式处理,不能自动完成。
      • 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;如:int --> (byte) byte

      注意事项:

      • 强制类型转换一般【不推荐】使用,因为有可能发生精度损失<浮点数>数据溢出<整数>
      • byte/short/char这三种类型都可以发生数学运算,例如加法“+”.(计算机的底层会用一个数字<二进制>来代表)
      • byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
      • 对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。
      • 在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。
      • boolean类型不能发生数据类型转换。

    运算符

    注意事项:

    • 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
    • 对于字符char类型来说,在计算之前,char会被提升成为int,然后在计算。
    • 任何数据类型和字符串进行连接的时候,结果都会变成字符串。
    • 与“&&”,或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。

    方法

      定义格式:

    修饰符 返回值类型 方法名称(参数类型 参数名称, ...) {
        方法体
        return 返回值;
    }
    
      •  返回值类型:也就是方法最终产生的数据结果是什么类型
      • 参数类型:进入方法的数据是什么类型
      • 参数名称:进入方法的数据对应的变量名称
      • 方法体:方法需要做的事情,若干行代码
      • return:两个作用,第一停止当前方法,第二将后面的返回值还给调用处
      • 返回值:也就是方法执行后最终产生的数据结果

    注意事项:

    • return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。
    • 方法应该定义在类当中,但是不能在方法当中再定义方法,不能嵌套。
    • 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
    • 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
    • 对于方法当中最后一行的return可以省略不写。但是有返回值的必须写。
    • 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到

      方法的重载:多个方法的名称一样,但是参数列表不一样

      • 好处:只要记住唯一一个方法名称,就可以实现类似的多个功能。
      • 方法重载与下列因素【有关】:
      1. 参数个数不同
      2. 参数类型不同
      3. 参数的多类型顺序不同
      • 方法重载与下列因素【无关】:
      1. 与参数的名称无关
      2. 与方法的返回值无关

    循环结构

      循环结构的基本组成部分,一般可以分为四部分:

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

    数组:是一种容器,可以同时存放多个数据值。

      数组的特点:

    1. 数组是一种引用数据类型。
    2. 数组当中的多个数据,类型必须统一

    3. 数组的长度在程序运行期间不可改变

      动态初始化数组的格式:

    数据类型[] 数组名称 = new 数据类型[数组长度];
    
      • 左侧数据类型,也就是数组当中保存的数据,全都是统一的什么类型
      • 左侧的中括号:代表我是一个数组
      • 左侧数组名称:给数组取一个名字
      • 右侧的new:代表创建数组的动作
      • 右侧数据类型:必须和左边的数据类型保持一致
      • 右侧中括号内数组长度:也就是数组当中,到底可以保存多个数据,是一个int数字
      • 使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:
        • 如果是整数类型,那么默认为0;
        • 如果是浮点类型,那么默认为0.0;
        • 如果是字符类型,那么默认为'u0000';
        • 如果是布尔类型,那么默认为false;
        •  如果是引用类型,那么默认为null。

      静态初始化基本格式:

    数据类型[] 数组名称 = new 数据类型[] {元素1, 元素2, ...};
    数据类型[] 数组名称 = {元素1, 元素2, ...};

      访问数组元素的格式:数组名称[索引值];

      • 索引值:就是一个int数字,代表数组当中元素的编号。
      • 索引值从0开始,一直到“数组的长度-1”为止。

      数组赋值内存图:

      数组引用类型图:

      数组中常见问题:

      • 如果访问数组元素的时候,索引编号并不存在,那么将会发生数组索引越界异常ArrayIndexOutOfBoundsException。
      • 数组必须进行new初始化才能使用其中的元素。如果只是赋值了一个null,没有进行new创建,那么将会发生:空指针异常NullPointerException。

    注意事项:

    • 静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。
    • 如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。

    java中的内存划分(5个部分)

    1. 栈(Stack):存放的都是【方法中】的局部变量方法的运行一定要在栈当中运行。
      1.  局部变量:方法的参数,或者是方法{}内部的变量。
      2.    作用域:一旦超出作用域,立刻从堆内存当中消失
    2. 堆(Heap):凡是new出来的东西,都在堆当中。
      1.    堆内存里面的东西都有一个地址值:16进制,堆内存里面的数据都有默认值
      2.    规则:如果是整数,默认为0;如果是浮点数,默认为0.0;如果是字符,默认为'u0000';如果是布尔,默认为false;如果是引用类型,默认为null。
    3. 方法区(Method Area):存储.class相关信息,包含方法的信息
    4. 本地方法栈(Native Method Stack):与操作系统相关。
    5. 寄存器(PC Register):与CPU相关。
  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/sunxn77/p/11079141.html
Copyright © 2011-2022 走看看