Java基础部分:基础知识

写在之前:

本系列文章内容仅仅是对yangchong相关文章内容的收藏与再备份,有需要查看作者原文的请点击此链接:技术博客笔记大汇总

一、Java语言概述

1、jdk工具部分exe解释

    ①jar.exe            jar包
    ②javadoc.exe   文档生成器
    ③Java.exe        解释器
    ④Javac.exe      编辑器

2、开发与运行Java程序需经历的几个过程

    ①用工具编辑源程序,也就是写代码,保存,生成java文件;
    ②用Java编辑器工具javac.exe编译源程序文件,生成字节码.class文件;
    ③用Java解释器工具Java.exe解释运行生成.class文件;

3、Java虚拟机(JVM)与Java代码是如何实现跨平台运行的

    ※※ JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序;
    ※※ 而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了“一次编译,到处运行”的目的;
    ※※ JVM是一个“桥梁”,是一个“中间件”,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的;
    ※※ 编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行;不同平台下编译生成的字节码是一样的,但是JVM翻译成的机器码不一样;
    ※※ 运行Java程序必须有JVM的支持,因为编译的结果不是机器码,必须要经过JVM的再次翻译才能执行。即使你将Java程序打包成可执行文件(例如 .exe),仍然需要JVM的支持;
    ※※ 跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM

二、Java标识符相关

    1、组成规则
        ①英文大小写字母
        ②数字字符
        ③$或_
    2、注意事项
        ①不能以数字开头
        ②不能是Java中的关键字
        ③区分大小写
        ④不能有空格
    3、命名规范(必须见名知意)
        ①下划线式命名;(例:my_name)
        ②驼峰式命名;(例:myName)
        ③类,接口命名:必须是大写字母开头;(例:PersonActivity)
        ④方法,变量【字符串】命名;(例:getData(),otherName)
        ⑤常量命名:一般全是大写;(例:MAX_VALUE)

三、Java中的常量与变量

    1、概念
        ①常量:其值不可以改变
        ②变量:其值会发生变化
    2、常量
        ①字符串常量:用双引号包括的 "hello world"
        ②整型常量:所有的整数 199
        ③小数常量:所有的小数 4.50
        ④字符常量:用单引号包括的 'a'
        ⑤布尔常量:true和false
        ⑥空常量:null
    3、变量
        用来描述值可以变化的量,比如室外温度,App活跃用户量...等

四、Java中的进制

1、进制有哪些

    ①二进制(前缀0b或者0B):由数字0和1组成;例:0B1001
    ②八进制(前缀0):由数字0-7组成;例:0103
    ③十进制(没有前缀):由数字0-9组成;例:103
    ④十六进制(前缀0x或者0X):由数字0-9 和字母 A-F组成;例:0X123

2、进制的转换

    ①其他进制转十进制:
    ②十进制转其他进制:除X取余倒排法(X表示进制)

3、原码、反码、补码相关知识

    ①概述:计算机中的有符号数有三种表示方法,即原码、反码和补码;三种表示方法均有符号位和数值位两部分;符号位都是用0表示“正”,用1表示“负”;而数值位,三种表示方法各不相同;
    ②模:是指一个计量系统的计数范围;例:8位二进制:其系统的模为;
    ③原码求反码:正数的反码和原码相同;负数的反码是对正数逐位取反,符号位为1;
    ④原码求补码:正数的补码和原码相同;负数的补码是它的反码加1;

五、Java中的字符编码

    1、常见的字符编码
        ①ASCII码
        ②GBK码
        ③Unicode码(占2个字节)

六、Java运算符

    1、运算符有哪些
        ①算术运算符
        ②赋值运算符
        ③关系运算符
        ④逻辑运算符
        ⑤三目运算符
        ⑥特殊运算符:位运算符
    2、算术运算符
        +-*/%++--
    3、赋值运算符
        =+=-=、 *=/=%=
    4、关系运算符
        ==><>=<=!=
    5、逻辑运算符
        &^|&&||
    6、三目运算符
        表达式:a == b ? c : d
        格式:(条件表达式)?表达式1:表达式2
    7、特殊运算符:位运算符
        &|^~<<>>>>>

七、Java基本语句结构

    1、语句结构有哪些
        ①顺序结构
        ②选择结构
        ③循环结构
    2、顺序结构
        即:从上到下依次执行
    3、选择结构
        ①ifif...else...if...[else if...]else...
        ②switch...case...;(支持byte,short,char,int,String)
    4、循环结构
        ①for语句
                for(初始化语句;判断条件语句;控制条件语句){
                                循环体语句;
                }
        ②while语句
                初始化语句;
                while(判断条件语句){
                                循环体语句;
                                控制条件语句;
                }
        ③do...while...语句
                do{
                                循环体语句;
                }while(判断条件语句)

八、Java方法

    1、概述
        ①方法就是完成特定功能的代码块;
        ②系统方法:只需要会使用,不需要知道内部的结构;
        ③自定义方法:方法的内部实现需要我们来写;
        ④方法内部不能再嵌套方法,即方法不能嵌套定义;
    2、格式
                修饰符 返回值类型 方法名(参数类型 参数名, ……){
                            函数体
                            return 返回值
(可省略,当返回值类型为void时,不需要return返回)
                }
        ①修饰符:public/.../private、static这种修饰符;
        ②返回值类型:所有的数据类型,包括:基本类型:int ,char ,float, long, 引用类型:String;
        ③方法名:符合标识符命名规范;见名知意;
        ④参数类型:所有的数据类型;
        ⑤参数名:符合标识符命名规范;见名知意;
        ⑥返回值:要返回的结果值;结果值的类型需要与返回值类型一致;可不需要返回值;

九、Java中的数组

1、概述

    ※※ 数组是一个容器,可以存储多个变量,这些变量数据类型要一致;
    ※※ 数组既可以存储基本数据类型,也可以存储引用数据类型;

2、一维数组

    ①数组的定义格式
        格式一:数据类型[  ]   数组名
        格式二:数据类型 数组名[  ]
    ②数组的初始化:
        Java中的数组必须先初始化,然后才能使用;
        所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值;
    ③数组初始化的几种方式:
        动态初始化:只指定长度,由系统给出初始化值;例:int[] a=new int[5]
        静态初始化:给出初始化值,由系统决定长度;例:int [] a={1,2,3};int[]=new int[]{1,2}
        ※※ 这两种初始化方式,只能使用一种,不能进行动静结合;

3、二维数组

    ①数组的定义格式:
                    数据类型[ ][ ] 变量名 = new 数据类型[m][n];
        m表示这个二维数组有多少个一维数组;
        n表示每一个一维数组的元素个数;

十、Java内存机制

    1、JVM内存区域划分
        ①程序计数器:线程私有;指示当前线程所执行的字节码执行到了第几行;
        ②虚拟机栈:线程私有;描述 java 方法执行的内存模型;
        ③本地方法栈:线程私有;描述 native 方法执行的内存模型;
        ④堆区:线程共享;垃圾回收器管理的主要区域,唯一目的就是存放对象的实例;
        ⑤方法区:线程共享;存储已经被虚拟机加载的类信息、final常量、静态变量...等;
    2、Java对象的访问方式
        一个Java的引用访问涉及到3个内存区域:JVM栈,堆区,方法区;
        以最简单的本地变量引用:Object obj = new Object()为例;
            Object obj:表示一个本地引用(引用类型),存储在JVM栈的本地变量表中;
            new Object():作为实例对象数据存储在堆中;
            方法区中还记录了Object类的类型信息(接口、方法、field、对象类型等);
    3、垃圾回收机制(GC机制)
        后续详细介绍;

十一、使用switch和if-else区别

1、switch语句特点

    ※※ 使用switch语句时,要注意表达式必须是符合byte,char,short,int或枚举类型的表达式,而不能使用浮点类型或long类型;
    ※※ switch语句将表达式的值依次与每个case子语句中的常量值相比较。如果匹配成功,则执行该case语句中的语句,直到遇到break语句为止;
    ※※ default语句是可选的,当表达式的值与任何一个case语句都不匹配时,就执行default后的语句;

2、switch语句与if-else比较

    ※※ if-else只是单纯地一个接一个比较;if...else每个条件都计算一遍;
    ※※ 使用了Binary,Tree算法;绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true。编译器编译switch与编译if...else...不同。不管有多少case,都直接跳转,不需逐个比较查询;switch只计算一次值,然后都是test , jmp……有很多else if的时候,用switch case比较清晰;
    ※※ switch...case与if...else,if的根本区别在于:switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的;从而,switch...case不用像if...else那样遍历条件分支直到命中条件,只需访问对应索引号的表项从而到达定位分支的目的;

你可能感兴趣的:(Java基础部分:基础知识)