Java编程入门基础知识合集

版权声明:本文为博主原创文章,转载请标注出处:http://blog.csdn.net/EnigmCode。 https://blog.csdn.net/EnigmCode/article/details/79291670

知识点一、JDK、JRE、JVM

(1)JVM:保证Java语言的跨平台特性,针对不同的操作系统提供不同的JVM;
    问题:Java语言跨平台吗?JVM跨平台吗?
        Java语言是跨平台的,依赖于JVM来实现;但是JVM本身不跨平台。
(2)JRE:Java程序的运行时环境,其包含了JVM和Java核心类库。
(3)JDK:Java开发工具包,为Java开发人员提供的工具,包含了JRE和开发工具。

知识点二:配置环境变量

(1)下载安装JDK
(2)配置环境变量

问题:为什么要配置环境变量?如何配置? 1)path环境变量 为了让javac和java等命令可以在任意的文件目录之下可以使用
配置方法: 新建JAVA_HOME:JDK的安装目录 修改path:在path中添加:%JAVA_HOME%\bin;
2)classpath环境变量(JDK1.5之后不用配置) 为了让class文件可以在任意的文件目录之下可以使用 配置方法:
新建classpath:JDK的安装目录 修改path:在path中添加:%JAVA_HOME%\bin;
总结:配置环境变量就是告诉系统到相应的位置去找需要的文件或者数据

知识点三:HelloWorld案例

(1)写程序
class HelloWorld{
            public static void main(String[] args){
                    System.out.println("hello, world")
            }
        }
(2)解释该程序
    A:calss 是用来定义类的,格式:class 类名{}
    B:程序要独立运行,必须要有主方法作为程序的入口,格式:
        public static void main(String[] agrs){}
    C:程序要输出类容,必须有输出语句,格式:
        System.out.println("hello, world");
(3)程序的编译和运行
    A:javac命令编译程序,后面跟上文件全名
        javac HelloWorld.java
    B:java命令执行程序,后接文件名
        java HelloWorld
(4)一个Java程序的开发流程
    1)编写源程序代码
    2)通过javac命令编译源程序文件,生成字节码文件
    3)通过java命令运行字节码文件

知识点四:Java注释

(1)注释:用于解释说明程序的文字
(2)分类:
    单行://注释内容
    多行:/*注释内容*/
    文档:/**注释内容*/
(3)案例:

public class HelloWorld{ //一个java入门程序,打印hello, world public
static void main(String[] agrs){ /程序的入口方法 /
System.out.println(“hello, world”);
/*调用println()方法,向控制台输出字符/ } }

(4)注释的作用:
    A:解释说明程序,提高程序的阅读性
    B:可以协助我们调试程序

知识点五:关键字

(1)关键:被Java赋予特定含义的单词
(2)特点:全文小写
(3)注意事项:
    A:goto和const作为保留关键字存在,目前不使用
    B:false、true、null不是关键字,但是在编写程序不能作为标识符

知识点六:标识符

(1)标识符:给类、接口、变量、常量、方法所起的名字
(2)命名规则:
    A:Java严格区分大小写,并且长度无限制
    B:由字母、数字、下划线_、美元符$的任意组合
    C:不能以数字开头
    D:不能是Java关键字和保留字
(3)常见命名规范
    A:包名:全文小写,多级之间用.来分割:com.zero.test
    B:类名:驼峰式命名:HelloWorld、MyName、YourWork
    C:方法名或变量名:
        单个单词全文小写:name、age、show()
        多个单词第一个单词全文小写,此后每个单词首字母大写myName、showAllStudentName()
    D:常量:
        单个单词全文大写:AGE
        多个单词全文大写,每个之间用下划线连接:STUDENT_MAX_AGE
    F:见文知意

知识点六:常量

(1)常量:在程序运行过程中,其值没有发生变化的量
(2)分类:
    A:字面值常量
    B:自定义常量(见后文)
(3)字面值常量
    A:字符串常量:用""括起来的内容。"hello,world"
    B:整数常量:1,200,300
    C:小叔常量:12.5,3.1415926,13.14
    D:字符常量:用''括起来的内容。'a','b','0'
    E:布尔常量:只有true和false两个
    F:空常量:null
(4)整数常量在Java中的表现形式
    A:二进制,由0,1组成,并使用0b开头;
    B:八进制,由0,1,2,3,4,5,6,7组成,使用0开头;
    C:十进制,由0,1,2,3,4,5,6,7,8,9组成,默认是十进制
    D:十六进制,由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成,使用0x开头
        注意:字母不区分大小写

知识点七:变量

(1)变量:在程序运行过程中其值发生变化的量,其本质是内存中的一块内存区域,通过变量类型和变量名访问这一块区域
(2)定义格式:
    A:  数据类型 变量名 = 初始化值
    B:  数据类型 变量名;
        变量名 = 初始化值;
(3)注意:作用区域:一对{}之间
(4)分类:
    A:基本数据类型变量,4类8种
    B:引用数据类型变量,类、接口、数组
    1)基本数据类型
        整数      占用内存空间(单位:bit)
        byte        1 x8
        short       2 x8
        int         4 x8
        long        8 x8
        小数
        float       4 x8
        double      8 x8        
        字符
        char        2 x8
        布尔
        boolean     1
    注意事项:
        A:整数默认int类型,小数默认double类型;
        B:定义long类型数据时末尾建议加上L或者l,推荐L
          定义float类型数据时末尾建议加上F或者f,推荐F
        C:引用数据类型大小统一为4个字节,记录的是其引用对象的地址
        D:小数float和double不适合用于不允许有舍入误差的金融计算领域;如果要进行不产生舍入误差的精确计算需要使用BigDecimal类。  
    面试题:Java中的字符可以存储一个汉字吗?为什么?
        可以;char型变量是用来存储Unicode编码的字符,Unicode编码包含了汉字,所以char可以存储任何一个包含在Unicode编码中的汉字。另外Unicode编码占两个字节。 
    2)类型转换
        a)自动数据类型提升从:小到大
            byte,short,char-->int-->long-->float-->double
        b)强制数据类型转换:从大到小
            格式: 目标数据类型 变量名 = (目标数据类型)(被转换的数据)
        注意事项:
            a:boolean不参与类型转换;
            b:一般不建议使用强制数据类型转换,因为可能损失精度;
            c:int-->float,long-->float,long-->double可损失精度;
            d:为byte,short,char等类型变量赋值,只要不超过其范围可以直接赋值;
            f:byte,short,char之间不会进行转换,三者在进行计算时会先转换为int类型。

知识点八:运算符

(1)运算:  对常量和变量进行的操作过程
(2)运算符: 对常量和变量进行操作的符号
(3)表达式: 由运算符把常量和变量连接起来的式子,另外,表达式是有结果的
(4)分类:
    a:  算术运算符
        1)+,-,*,/,++,--
        2)整数相除结果是整数,想要得到整数,可以乘以1.0或者除以1.0
        3)取于的结果的符号和前面的数一致
        4)++,--;在数据之前表示数据先变化,再运算;在数据之前表示先运算,再数据变化;
    b:  赋值运算符
        1)=,+=,-=,/=,*=,/=,%=
        2)+=,-=,/=,*=,/=,%=表示把左边和右边运算的结果赋值给左边,并强制转换为右边的类型
    c:  关系运算符
        1)==,!=,>,>=,<,<=
        2)结果为boolean类型
    d:  逻辑运算符
        1)&,|,^,!,&&,||
        2)单用法
            & 有false则为false
            | 有true则为true
            ^ 相同为false,不同为true
            ! 偶数个,值不变,奇数个,值相反
        3)&&左边为false,右边不再执行;||左边为true,右边不再执行
        4)优先级:逻辑非!--逻辑与&&--逻辑或||
    f:  位运算符
        1)&,|,^,~,>>,<<,>>>
        2)做位运算,需要将数据转换为二进制
        3)^的特点:针对同一个数据异或两次,值不变;
    面试题:
        1,下面表达式中那一个不能通过编译
          (A):short s = 1;s = s + 1;
          (B):short s = 1;s +=1;
          答案:B,+=表示把左边和右边运算的结果赋值给左边,并强制转换为右边的类型
        2,请使用最有效率的方式计算2乘以8的结果
            答案:2<<3;
        3,请交换变量的值:
            int a = 10;
            int b = 20;
            答案:
              a:方式一,引用第三方变量
                int temp = a;
                a = b;
                b = temp;
              b:方式二,采用^来实现
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;
    g:三目运算符(条件运算符)
        格式: 关系表达式?表达式1:表达式2;
        计算流程:计算关系表达式的值,如果值为true,表达式1就是结果;如果值为false,表达式2就是结果;
        练习题:
            A:获取两个数中较大的值
                a>b ? a : b;
            B:获取三个数中较大的值
                a>b ? (a>c ? a :c) : (b>c ? b : c);
            C:判断两个数是否相等
                a==b ? true : false;

知识点九:流程控制结构

(1)顺序结构:    程序从上之下,依次执行;
(2)选择结构:    根据条件跳转,进行依次执行;
(3)循环结构:    重复执行某一些过程。
**选择结构:if语句**
    (1)三种格式
        A:格式1:

if(关系表达式){
语句体;
}

            执行流程:
                a:先判断关系表达式的值
                b:如果为true,就执行语句体,否则不执行;
                c:执行玩完,之后继续向下执行
        B:格式2:

if(关系表达式){
语句体1;
}else{
语句体2;
}

            执行流程:
                a:先判断关系表达式的值
                b:如果为true,就执行语句体1,否则执行语句体2;
                c:执行玩完,之后继续向下执行
        C:格式3:

if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}…
else{
语句体n+1;
}

            执行流程:
                a:先判断关系表达式1的值
                b:如果为true,就执行语句体1,否则判断关系表达式2的值;
                c:判断关系表达式2的值,如果为true,就执行语句体2,否则判断关系表达式3的值;
                d:如果所有的关系表达式都不成立,就执行else里面的语句体n+1;
                f:执行玩完,之后继续向下执行。
    (2)注意事项
        A:关系表达式不论复杂与否,结果必须是boolean类型;
        B:if语句的语句体如果是一条语句,{}是可以省略的,如果是多条则不能省略,但是不建议省略;
    (3)练习题
        A:获取两个数据中较大的值

if(a>b){
System.out.println(a); }else{
System.out.println(b); }

        B:获取三个数中较大的值

if(a>b){
if(a>c){
System.out.println(a);
}else{
System.out.println(c);
} }else{
if(b>c){
System.out.println(b);
}else{
System.out.println(c);
} }

        c:比较两个数是否相等
        if(a==b){
            System.out.println("true")
        }else{
            System.out.println("false")
        }
        D:跟据键盘录入的x值,计算y=x+1的结果(参考知识点十)
        E:根据学生的成绩,输出对应的等级评价(参考知识点十)
        F:根据键盘录入的月份,输出对应的季节(参考知识点十)
**选择结构:switch语句**
    (1)格式:

switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;

default:
语句体n+1;
break; }

        格式说明:
            A:看到switch说明这是switch语句
            B:表达式的取值
                byte,short,int,char
                JDK5之后可以是枚举类型
                JDK7之后可以是String
                面试题:switch的表达式可以是byte吗?可以是long吗?可以是String吗?
            C:case后面的值是和表达式进行匹配的
            D:break说明语句中断了
            E:default和if语句里面的else相似,用于处理所有不匹配的情况。
    (2)执行流程
        A:计算表达式的值
        B:使用表达式的值进行匹配,如果有对应的就执行对应的语句体
        C:如果没有对应的就执行default语句之后的语句体
    (3)注意事项
        A:case后面只能是常量,并且不能重复
        B:break可以省略吗?
            可以,最后一个肯定可以,中间的也可以,但是不建议省略,因为结果可能不是所需要的,并且会产生case穿透;
        C:default不一定要写在语句最后,但是要注意加上break
        E:switch语句结束的条件,遇到break或者执行到程序的末尾
    (4)if语句和switch语句各自的应用场景
        A:if语句
            可以对几个常量值进行判断
            可以对表达式是boolean类型的进行判断
            可以对一个数据范围进行判断
        B:switch语句
            适合几个常量值的判断
    (5)练习题
        1、表达式是整数的情况
        2、表达式是字符的情况
        3、表达式是字符串的情况
        4、根据键盘录入的月份,输出相应的季节
**循环结构:for循环**
    格式:

for(单次表达式;条件表达式;末尾循环体){
中间循环体; }

    执行流程:
        A:执行单次表达式
        B:判断条件表达式的值,如果为true则执行下一步,否则结束
        C:执行中间循环体
        D:执行末尾循环体
        E:回到B继续执行
循环结构:while循环
    格式:

while(条件表达式){
中间循环体;
末尾循环体; }

        单次表达式;

while(条件表达式){
中间循环体;
末尾循环体; }

    执行流程:
        A:判断条件表达式的值,如果为true则执行下一步,否则结束
        B:执行循环体
        C:回到A继续执行
**循环结构:do…while循环**
    格式:

do{
中间循环体;
末尾循环体; }while(条件表达式);

        单次表达式;

do{
中间循环体;
末尾循环体; }while(条件表达式);

    执行流程:
        A:执行中间循环体
        B:执行末尾循环体
        C:判断条件表达式的值,如果为true则执行下一步,否则结束
注意事项:
    A:三种循环的比较
        for循环和while循环可以一次都不执行,do…while循环至少执行一次
    B:三种循环的使用
        a:可以相互转换、相互改写
        b:for循环适用于知道循环范围的循环,while循环常用于不知道循环次数的循环
        c:当循环中变量的变量需要保留下来供以后计算,则使用while
练习题
    A:输出十次"HelloWorld"
    B:打印1-10
    C:打印10-1
    D:计算1-100的和
    E:计算1-100中偶数的和
    F:打印九九乘法表
    G:打印斐波拉其数表
控制跳转语句:break、continue、return
    break应用场景:
        A:在选择结构switch语句中
        B:在循环语句中

    continue应用场景:
        A:在循环语句中
    return:用于结束方法
    break和continue的区别
        break表示退出整个循环,continue表示退出本次循环

知识点十:键盘录入数据

记忆格式:
(1)导包:import java.util.Scanner;
(2)创建键盘录入对象:
    Scanner sc = new Scanner(System.in);
(3)获取数据
    int i = sc.nextInt();
(4)关闭数据输入
    sc.close();
(5)练习题
    A:输入两个数并求和
    B:输入两个数求最大值
    C:输入三个数,求最大值
    D:输入两个数,并判断他们是否相等

知识点十一:方法重载

(1)在同一个类中,方法名相同,参数列表不同的方法。
    参数列表不同:个数不同,数据类型不同与返回值无关。
    面试题:Java是怎么区分方法的?
        首先依照方法名区分,若方法名相同则依照参数列表来区分
(2)练习题:采用方法重载,构造一组比较数据是否相等的方法。

知识点十二:一维数组

(1)数组:存储同一种数据类型的多个元素的容器
    每一个元素都有编号,从0开始编号,最大号数长度-1
(2)格式:
    A:数据类型[] 数组名;
    B:数据类型 数组名[];
(3)数组的初始化
    A:动态初始化:只给长度,不给元素

int[] arr = new int[3];

    B:静态初始化:不给长度,直接给元素

int[] arr = new int[]{1,2,3}

简化版:int[] arr = {1,2,3}

(4)Java中内存的分配
    A:栈 存储局部变量
    B:堆 new出来的东西
    C:方法区
    D:本地方法区
    E:寄存器
(5)两个常见问题
    A:数组角标越界
    B:空指针异常
(6)数组常见操作
    A:获取数组长度 数组名.length
    B:数组遍历
    C:获取最值
    D:数组反转
    E:查表法
    F:查找指定元素第一次出现的位置

知识点十三:二维数组

(1)二维数组:元素是一维数组。
(2)格式:
    A:数据类型[][] 变量名 = new 数据类型[m][n];
    B:数据类型[][] 变量名 = new 数据类型[m][];
    C:数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}…};
        简化版:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}…};
(3)常见操作:
    A:数组遍历
    B:元素求和

思考知识点:

(1)Java参数传递问题
    基本数据类型:形式参数的改变不影响实际参数;
    引用数据类型:形式参数的改变直接影响实际参数;
    Java中只有值的传递,地址也是一个值。
(2)数据加密问题

猜你喜欢

转载自blog.csdn.net/EnigmCode/article/details/79291670