java 基础知识

来源:互联网 发布:电脑版解压软件 编辑:程序博客网 时间:2024/05/29 03:35

一、简介

  1. JVM(Java Virtual machine)
  2. JRE(Java Runtime Environment)包含java虚拟机和java程序所需要的核心类库
  3. JDK(Java Development Kit Java开发工具包),用于开发Java程序。包括JRE和java的开发工具。所以安装了JDK,就不用单独安装JRE了。

    其中: 编译工具(javac.exe) 打包工具(jar.exe)

  4. 安装:

    安装的JDK是一个绿色版的,可以拷贝到任何地方。安装之后还会提示安装一个独立的JRE,这个可以不用,应为JDK下面已经有一个JRE了。JavaFX是一个和ajax差不多的SDK,用于前端开发。

    设置PATH :将bin文件夹的绝对路径添加到Path可以解决命令行中调用java工具就不用指定绝对路径了。JAVA_HOME 指定JDK的根目录,就是bin的父目录。

    也可以在CMD里使用 set path= bin;%path% 添加bin的路径。 临时配置(只在当前窗口显示)

    set 查看本机所有环境变量;set 变量名 查看具体环境变量的值 set 变量名= 清空一个环境变量的值;set 变量名=变量值 给指定变量指定具体值。%变量名% 可以引用他的实际值。

  5. .java文件--->javac.exe编译生成 .class文件 --->java.exe运行
  6. class文件的寻找顺序

    在没有classpath的时候,只在当前目录下面查找要运行的类文件

    在存在classpath的时候,会在设置的目录下查找类文件。如果最后目录以分号结尾,jvm没有找到时会在当前目录继续查找。不建议加分号,可以用.表示当前目录。

二、基础

  1. 关键字:定义:被java语言赋予了特殊含义
    特点:关键字中所有字母都为小写用于定义数据类型的关键字classinterfacebyteshortintlongfloatdoublecharbooleanvoid    用于定义数据类型值的关键字truefalsenull  用于定义流程控制的关键字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn    定义访问权限修饰符的关键字privateprotectedpublic  定义类、函数、变量修饰符的关键字abstractfinalstaticsynchronized 定义类与类之间关系的关键字extendsimplements   定义建立实例及引用都实例,判断实例的关键字newthissuperinstanceof 用于异常处理的关键字trycatchfinallythrowthrows用于包的关键字packageimport   其它修饰符关键字nativestrictfptransientvolatileassert
  2. 标识符:
    26个字母的大小写,数字0-9,_$组成。数字不能开头,不可以使用关键字。严格区分大小写(规则)
    1. 包名:所有字母都小写
    2. 类名、接口名:首字母要大写,多词组成时每个词的首字母都大写。(规范)
    3. 变量名、函数名:多单词组成时,第一个单词小写,从第二个单词开始首字母大写
    4. 常量名:所有字母大写。多单词时用下划线连接
  3. 注释:单行注释 //; 多行注释 /* */; 文档注释/** */
  4. 常量和变量

    常量:整数常量、小数常量、布尔(boolean)常量、字符常量(将一个数字字母或者符号用单引号标识)、字符串常量(将一个或者多个字符用双引号标识)、null常量(null)。

    对于整数有四种表现形式:二进制;八进制,用0开头;十进制;十六进制,用0x开头。

    变量:格式:数据类型 变量名 = 初始化值

    数据类型:

    1. 整数类型:byte(1Byte)、short(2Byte)、int(4Byte)、long(8Byte)
    2. 字符类型:float(4Byte)、double(8Byte)
    3. 字符型:char(2Byte 0-65535)
    4. 布尔型:boolean(true、false)
    5. 类:class(引用类型)
    6. 接口:interface(引用类型)
    7. 数组:[](引用类型)

    整数默认:int 小数默认:double;数字后面紧跟l表示该数字是long型的 小数后面紧跟f表示该小数是float类型

  5. 运算符

    算数运算:

    运算符运算范例结果+正号+33-负号b=4;-b-4+加  -减  *乘  /除  %取模  ++自增

    a=2;b=++a;

    a=2;b=a++;

    a=3,b=3;

    a=3,b=2

    --自减  +字符串相加  

    取模时,被模数是负数,结束就是负数,模数正负对结果没有影响。

    相加时只要有字符串,结果肯定是字符串

    赋值运算符:

    =,+=,-=,*=,/=, %=

    比较运算符:

    ==,!=,<,>,<=, >=, intstanceof(检查是否是类的对象)

    逻辑运算符:

    运算符运算范例结果&AND(与)false&truefalse|OR(或)false|truetrue^XOR(异或)true^falsetrue!NOT(非)!truefalse&&AND(短路)false&&truefalse||OR(短路)false||truetrue

    位运算符:

    运算符运算范例 <<左移 空位补0,被移除的高位丢弃,空缺位补0>>右移 被移位的二进制最高位是0,右移后,空缺位补0;
    最高位是1,空缺位补1。>>>无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。&与运算 二进制位进行&运算,只有1&1时结果是1,否则是0;|或运算 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;^异或运算 任何相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
    不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1~反码  

    三元运算符:

    (条件表达式)?表达式1:表达式2;
    如果条件为true,运算后的结果是表达式1;
    如果条件为false,运算后的结果是表达式2;

三、程序控制语句

  1. 判断结构

    if格式

    if(条件表达式)
    {
    }
    if(条件表达式)
    {
    }
    else
    {
    }
    if(条件表达式)
    {
    }
    else if(条件表达式)
    {
    }
    else
    {
    }

    switch格式

    switch(表达式)//只支持byte,short,int , char四种类型{      case 取值1:      执行语句;      break;      case 取值2:      执行语句;      break;      …      default:      执行语句;      break;}

    case 和default的顺序没有要求。但是只要条件符合之后就不会再判断条件,直到遇到break或者switch的结束括号。

  2. 循环结构

    while语句格式 :

    while语句格式 :
    while(条件表达式)
    {
    执行语句;
    }

    do while语句格式:

    do
    {
    执行语句;
    }while(条件表达式);

    for格式:

    for(初始化表达式;循环条件表达式;循环后的操作表达式)
    {
    执行语句;
    }
  3. 其他流程控制语句

    break( 跳出) , continue( 继续)
    break语句:应用范围:选择结构和循环结构。
    continue语句:应用于循环结构。

    注:
    a,这两个语句离开应用范围,存在是没有意义的。
    b,这个两个语句单独存在下面都不可以有语句,因为执行不到 。
    c,continue语句是结束本次循环继续下次循环。
    d,标号的出现,可以让这两个语句作用于指定的范围。

  4. 局部代码块
    可以将缩小变量的作用域。

四、函数

  1. 函数的格式:

    修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)
    {
    执行语句;
    return 返回值;
    }

    返回值类型:函数运行后的结果的数据类型。
    参数类型:是形式参数的数据类型。
    形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
    实际参数:传递给形式参数的具体数值。
    return:用于结束函数。
    返回值:该值会返回给调用者。

  2. 函数的重载(overload)

    重载的概念
    在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

    重载的特点
    与返回值类型无关,只看参数列表。

    重载的好处
    方便于阅读,优化了程序设计。

五、数组

  1. 格式:

    格式1:

    元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
    示例:int[] arr = new int[5];

    格式2:

    元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
    int[] arr = new int[]{3,5,1,7};
    int[] arr = {3,5,1,7};
  2. 数组内存结构

    数组的名字在栈内存存储了数组元素在堆内存的首地址,数组中元素在堆内存中

  3. 数组操作常见问题

    数组脚标越界异常(ArrayIndexOutOfBoundsException)

    int[] arr = new int[2];
    System.out.println(arr[3]);
    访问到了数组中的不存在的脚标时发生。

    空指针异常(NullPointerException)

    int[] arr = null;
    System.out.println(arr[0]);
    arr引用没有指向实体,却在操作实体中的元素时。
  4. 数组常见操作

    获取最值(最大值,最小值)

    排序(选择排序,冒泡排序)

    折半查找(二分查找)

  5. 数组中的数组

    格式1:int[][] arr = new int[3][2];

     定义了名称为arr的二维数组
     二维数组中有3个一维数组
     每一个一维数组中有2个元素
     一维数组的名称分别为arr[0], arr[1], arr[2]
     给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

    格式2:int[][] arr = new int[3][];

     二维数组中有3个一维数组
     每个一维数组都是默认初始化值null
     可以对这个三个一维数组分别进行初始化
    arr[0] = new int[3];
    arr[1] = new int[1];
    arr[2] = new int[2];

    格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

     定义一个名称为arr的二维数组
     二维数组中的有三个一维数组
     每一个一维数组中具体元素也都已初始化
     第一个一维数组 arr[0] = {3,8,2};
     第二个一维数组 arr[1] = {2,7};
     第三个一维数组 arr[2] = {9,0,1,6};
     第三个一维数组的长度表示方式:arr[2].length;
    注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。

内存结构

栈内存

用于存储局部变量,当数据使用完,所占空间会自动释放。

堆内存

数组和对象,通过new建立的实例都存放在堆内存中。  每一个实体都有内存地址值  实体中的变量都有默认初始化值  实体不在被使用,会在不确定的时间内被垃圾回收器回收

方法区

本地方法区

寄存器

原创粉丝点击