黑马程序员技术交流社区

标题: 关于JAVA基础 [打印本页]

作者: 616438568    时间: 2019-8-20 23:21
标题: 关于JAVA基础
关于java计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言Java编程语言是人与计算机沟通最优秀的语言之一1995年Java由sun公司推出,1996年推出第一个版本,Java之父是詹姆斯高斯林2004年的Java5.0因为更新较大,所以长时间被企业使用,改名成JAVAEE、JavaSE、JavaME。2009年sun公司因管理不善被Oracle收购,我们现在可以在Oracle官网获取最新版本的Java版本https://www.oracle.com 。2014年Oracle推出第一个LST版本Java——Java8.0。是目前企业流行版本。之后Java每半年推出一个版本,最新版本为2019年3月份发布的java12。不建议更新。Java之所以优秀,被企业推崇,源自于其本身的很多优点,像跨平台、安全、对高并发支持很好等等
运算符&表达式  运算符其实就是一些符号(eg:+ - * /)   表达式用运算符连接起来的一些式子,成为表达式。如果用算术运算符连接起来,就是算术表达式
1. 算术运算符+ - * / %整数相除结果只能是整数  %取余,结果是余数  自动类型提升:
基本数据类型(boolean除外)进行算术运算时,会有自动类型提升:
a. byte、short、char参与运算时,会自动转换成int类型,然后再进行运算
b. 在算术表达式中,讲数据类型转换成参与运算的所有数据中的最高级别。(byte/short/char<int<long<float<double)
字符串相+ 其实就是字符串的拼接
从左往右依次执行,在遇到字符串之前,会找原有的规则进行运算。
如果遇到了字符串,就开始进行字符串拼接。自增/自减运算符  ++/--        变量增加/减少1使用:        单独使用        在前或在后,对运算结果没有影响  参与运算   自增或自减在前,先进行自增减然后再参与其他运算  自增或自减在后,先进行其他运算,然后再进行自增减
2.赋值运算符 =     int i = 10;        //将10赋值给int类型的变量i   i = i + 20;        //将i的值加上20之后,重新赋值给变量i
复合赋值运算符
+=、-=、*=、/=、%=
i += 10;  //在结果上等同于i = (i的类型)(i +10);
一般不建议使用强转,建议使用复合赋值运算符
3.关系运算符
关系表达式的结果只能是boolean类型,也就是只能是true或者false  ==、>、<、>=、<=、!=
不要将==错写成了=   System.out.println(i=j+k),把j的值赋值给变量i,并且输出
4. 逻辑运算符  连接了两个及以上的关系表达式  &、|、^、!
& 与        并且        只要有false,结果就是false,同时为true,结果才是true   | 或        或者        只要有true,结果就是true;同时为false,结果才是false
^a异或        男女关系        相同为false,不同为true
! 非        否定        !true = false, !false=true; !!true = true;
短路逻辑运算符
&&        短路与        只要遇到false,后面的关系表达式便不执行
||        短路或        只要遇到true,后面的关系表达式便不执行
工作中常用的是 &&、||、!
5. 三元运算符
格式:关系表达式 ? 表达式1 : 表达式2
示例: a > b ? c : d
执行流程:
判断关系表达式的值如果该值为true,三元表达式的值就是表达式1的值
如果该值为false,三元表达式的值就是表达式2的值
6. 键盘录入的三个步骤
导包                import java.util.Scanner;  创建对象        Scanner sc = new Scanner(System.in);
接收数据        int i = sc.nextInt();       
7. if语句格式1
        if(关系表达式){
                语句体       
        }
执行流程
1. 判断关系表达式的值
2. 如果关系表达式的值为true,就执行语句体,然后继续执行后面的其他代码
3. 如果关系表达式的值为false,就不执行语句体,接续执行后面的其他代码
8. if语句格式2
        if(关系表达式){
                语句体1;
        } else {
                语句体2;
        }
9. if语句格式3
        if(关系表达式1){
                语句体1;
        }else if(关系表达式2){
                语句体2;
        }
        ……
        else{
                语句体n+1;
        }

10 switch
        语句格式:
        switch(表达式){
                case 值1:
                        语句1;
                        break;
                case 值2:
                        语句2;
                        break;
                ……
               
                default:
                        语句n+1;
                        [break;]
        }
       
        表达式结果的类型:byte、short、char、int、枚举、String
       
        执行流程:
                计算表达式的值,然后从上往下和各个case后面的值进行比对,只要发现相同,就执行该case的语句,遇到break,switch语句结束;如果所有的case都不匹配,执行default的语句。
               
        case穿透
                如果某个case内没有break,在执行该case内语句后,并不会再次判断后面case的值是否匹配;
                而是直接执行后面case中的语句,直到遇到break或者语句结束。
11. 循环结构可以通过
        for        while        do…while
        实现
12. 数组
        a 概念:存储多个同一类型数据的容器(内存空间)
        b 格式:数据类型[] 变量名;(不推荐:数据类型 变量名[])
        c 数组的初始化
        数据需要先初始化后使用(变量也是一样)
        初始化的工作:
                a). 开辟内存空间
                b). 为数组中元素赋值
       
        数组初始化方式:
                a) 动态初始化(指定数组长度,由系统按照默认值确定元素内容)
                b) 静态初始化(系统指定数组长度,指定数组元素内容)
               
        动态初始化就是只给定数组的长度,元素的初始化交给系统默认处理。
                数据类型[] 变量名 = new 数据类型[n];
        动态初始化格式:
                数据类型[] 变量名 = new 数据类型[n];
                左边:
                        数据类型        存储在这个数组中元素的类型
                        []                        表示这是一个数组
                        变量名                数组的名字
                       
                右边:
                        new                        开辟/申请内存空间
                        数据类型        存储在这个数组中元素的类型
                        []                        表示这是一个数组
                        n                        数组长度,是一个整型值
13. 方法的概述:
        具有一定功能的代码集合;

        注意事项:
        a. 方法必须先定义再使用
        b. 方法创建之后,需要手动使用,这个过程叫做方法的调用。
       
14. 最简单方法的定义和调用
        1. 定义格式
                public static void 方法名(){
                        方法体; //需要根据具体需求编写
                }
        2. 使用
                方法名();
                isEvenNumber()
               
        3. 注意事项
                a. 方法定义在类里面,main方法外面(方法不能嵌套定义)
                b. 方法的调用,是在其他方法(目前是在main)里面
                c. 一个作用:提高代码的复用性
                d. 方法的调用时在栈内存中,方法被调用时进栈,调用完毕后方法出栈

       
15. 带参数方法的定义和调用
        定义格式:public static void 方法名(参数列表){
                                方法体
                          }
        使用:
                方法名(与参数列表匹配的变量/常量);
               
        参数列表:
                组成: 数据类型1 变量名1, 数据类型2 变量2,……
                1. 数据类型和 变量名必须成对出现
                2. 调用时候,传的值或变量需要与定义时参数列表匹配
                3. 参数列表匹配要求的是:各个参数的类型、参数数量、参数顺序都匹配
                getMax(int num1, double num2)                       
16. 形参和实参
        形参:方法定义的时候使用的参数
                格式:数据类型 变量名
               
        实参:方法调用时候传递的参数
                变量名/常量值
               
        形参和实参的关系
                1. 名称:没有关系
                        实参的变量名和形参的变量名没有关系,可以完全不一样
                2. 当参数为引用数据类型时
                        形参和实参指向了堆内存中同一地址值,通过任意一个参数修改其值,另外一个参数的值的具体内容会同步发生改变
               
17. 带返回值的方法定义和调用
        返回值:方法的运算结果,这个结果的类型就是返回值的类型
        格式:
                public static 返回值类型 方法名(参数列表){
                        方法体
                        return 返回值;               
                }
               
        调用:
                调用格式1:
                        方法名(与参数列表匹配的变量/常量);
                调用格式2:
                        数据类型 变量名 = 方法名(与参数列表匹配的变量/常量);
                调用格式3:直接在其他方法中调用
                        System.out.println(方法名(与参数列表匹配的变量/常量));
                调用格式4:传参调用
                        作为实参传递进其他的方法列表中

       
18. 方法定义的注意事项
        1. 方法不能嵌套定义,只能定在类里面,其他方法外面
        2. 返回值类型如果是void,表示没有返回值
                方法中可以不写return
                方法中可以写return,但是要这样写 return;
        3. 返回值类型如果不是void,return值的类型必须和方法定义时返回值类型一致
        4. 方法的return语句之后,不能再有语句,因为不会被执行
       

19. 方法的通用格式
        格式:public static 返回值类型 方法名(参数列表){
                方法体
                return
        }


        public static        修饰符,目前先记住
        返回值类型        方法运行结果值的类型
        方法名                标识符,通过方法名调用该方法
        参数列表        数据类型 变量名,……(参数列表是否匹配依据:参数类型、参数个数、参数顺序)
        方法体                依业务而定,就是方法运行的主体
        return                讲方法运行结果值返回,该值类型需要与方法的返回值类型一致
                        如果方法没有返回值,return可以不写,也可以return;

        两个明确:
                明确返回值类型
                明确参数列表
        调用
                如果返回值类型是void,直接调用即可
                如果返回值类型不是void,建议通过变量接收其返回值,以便继续使用


20. 方法重载
        在同一个类中,存在方法名相同,参数列表不同的多个方法,这些方法之间就构成了方法重载
        1. 在同一个类中(后续再做优化调整)
        2. 多个方法方法名相同,返回值类型无所谓(方法名、参数列表相同,仅返回值类型不同的两个方法不是重载,是重复,会报错)
        3. 参数列表不同:参数类型、参数个数、参数顺序
        4. 调用时只需要传参就可以了,虚拟机会自己判断调用某个方法

21. 方法调用过程中参数传递细节
                当参数是基本数据类型时,形参的改变不会影响实参
                当参数是引用数据类型时,形参的改变会影响实参





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2