A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

dongbin

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© dongbin 初级黑马   /  2018-4-3 23:34  /  983 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一. 关键字: 1).什么是关键字?
                被java赋予特定含义的单词
        2).特点:
                组成关键字的字母全部小写
        3).注意事项:
                我们在起名字的时候不能使用关键字

二 . 标识符
        1).什么是标识符:就是给类,接口,方法,变量起的名字
        2).标识符的组成
                * 英文大小写字母
                * 数字
                * $和_
        3).注意事项(重点!!!):
                1.不能使用关键字
                2.不能以数字开头
                3.如果你要使用符号,只能使用$和_
        4).常见命名规则(重点!!!):
                * 包:把包理解成我们的文件夹,一般是公司域名倒着写,com.itheima
                * 类或者接口
                        如果是一个单词,首字母大写
                        如果是多个单词,每个单词的首字母都大写
                * 方法或者变量
                        如果是一个单词,全部字母小写
                        如果是多个单词,从第二个单词开始首字母大写
                * 常量
                        如果是一个单词,全部字母大写
                        如果是多个单词,每个单词之间用_分开

三 . 常量
        字面值常量
                字符串常量string        用双引号括起来的内容
                整数常量        所有整数
                小数常量        所有小数
                字符常量    用单引号括起来的内容,里面只能放单个数字,单个字母,单个符号
                布尔常量        true,false
                空常量                null(数组部分讲解)
        自定义常量(面向对象部分讲解)

四 . 变量(重点!!!)
        1).什么是变量?
                在程序执行的过程中,其值可以发生改变
        2).为什么有变量?
                用来不断的存放同一类型的常量,并可以重复使用
        3).变量定义格式
                数据类型 变量名 = 变量值;

五 . 1).为什么有数据类型?
                Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
        基本数据类型(四类八种)
                整数型
                        byte        占1个字节        -128到127
                        short        占2个字节
                        int                占4个字节
                        long        占8个字节
                浮点型(小数型)
                        float        占4个字节
                        double        占8个字节
                字符型
                        char        占2个字节        0-65535
                布尔型
                        boolean 他的值要么是true,要么是false
        引用数据类型(面向对象部分讲解)
        *** 练习:定义不同数据类型的变量,并输出
        2).使用变量的注意事项
                * a:作用域问题
                        * 同一个区域不能使用相同的变量名(我们目前的同一个区域指的就是main方法)
                * b:初始化值问题
                        * 局部变量在使用之前必须赋值
                * c:一条语句可以定义几个变量
                        * int a,b,c...;
六 . 数据类型转换
        1).隐式转换
        class Test {
                public static void main(String[] args) {
                        byte a = 3;
                        int b = 4;
                        //byte + int---->小的数据类型与大的数据类型运算的时候,小的数据类型会自动提升为大的数据类型
                        int c = a + b;
                        //b = a + b;
                        System.out.println(c);
                }
        }
        2).强制转换
        class Test {
                public static void main(String[] args) {
                        byte a = 3;//java有优化机制,
                        int b = 4;
                        a = (byte)(a + b);//注意:byte需要使用小括号括起来
                        System.out.println(a);

                }
        }

七 . 运算符(重点!!!)
        1.算术运算符
                * 基本的:+, -, *, /, %
                        关于+:
                                1).正号
                                2).进行加法操作
                                3).字符串的连接符:任何数据类型与字符串相连接都会变成一个字符串
                        关于/:
                                获取的是除法操作的商
                                注意:两个整数相除得到的一定是整数,如果要得到小数,将其中任意一个数变成小数即可
                        关于%:
                                方案一:
                                        * 当左边的绝对值小于右边绝对值时,结果是左边
                                        * 当左边的绝对值等于右边或是右边的倍数时,结果是0
                                        * 当左边的绝对值大于右边绝对值时,结果是余数
                                        * %运算符结果的符号只和左边有关系,与右边无关
                                方案二(推荐方案):
                                        获取的是除法操作的余数,其结果的符号只与左边有关,与右边无关,并且与左边数值的符号相同
                                        Demo:
                                        System.out.println(5 % 2);//1
                                        System.out.println(-5 % 2);//-1
                                        System.out.println(5 % -2);//1

                                        System.out.println(2 % 7);//2
                                        System.out.println(-2 % 7);//-2
                                        System.out.println(2 % -7);//2
                                注意事项:
                                        任何一个正整数%2的结果不是0就是1,可以用来作为切换条件
                * 特殊的:++ --
                        1).单独使用:放前放后一样
                                ++:对原有的数据+1
                                --:对原有的数据-1
                        2).参与运算:放操作数前面,会先运算再赋值,放操作数后面,会先赋值再运算
                ***算术运算符++和--的练习(重点!!!)
        2.赋值运算符
                a.基本的:=
                        把=号右边的数据赋值给左边
                        int a = 4;
                b.特殊的:+=,-=,*=,/=,%=
                        把运算符左边和右边的数据进行运算,再赋值给左边
        3.关系运算符(也叫比较运算符,也叫条件运算符)
                ==,!=,>,>=,<,<=
                注意事项:
                        1).无论你操作的数据是简单还是复杂,最终得到的结果都是boolean类型
                        2)."==" 不能写成"="
        4.逻辑运算符
                1).基本的:&,逻辑与,有false则false
                                  |,逻辑或,有true则true
                                  ^,逻辑异或,相同为false,不同为true
                                  !,逻辑非,非false则true,非true则false
                2).特殊的:&&,短路与,左边为false,右边不执行,最终结果与&相同
                                  ||,短路或,左边为true,右边不执行,最终结构与|相同


八 . 流程控制语句_可以控制程序的执行流程
        1.顺序结构
                * 从上往下,依次执行
        2.选择结构
                2.1).if语句
                        a.格式一
                                if (比较表达式) {
                                        语句体;
                                }
                                执行流程:
                                        1).计算比较表达式的值是true还是false
                                        2).如果是true,则执行语句体
                                        3).如果是false,则不执行语句体
                                注意事项:
                                        1).比较表达式无论简单还是复杂,其结果都是true/false
                                        2).if语句控制的语句体如果只有一句,大括号可以省略;如果控制的语句体是多条语句,则大括号不可以省略,建议永远不要省略
                                        3).有左大括号就没有分号,有分号就没有左大括号
                        b.格式二
                                if (比较表达式) {
                                        语句体1;
                                } else {
                                        语句体2;
                                }
                                执行流程:
                                        1).计算比较表达式的值是true还是false
                                        2).如果是true,则执行语句体1
                                        3).如果是false,则执行语句体2
                                注意事项:
                                        1).else后面是没有表达式的
                                **练习一:输出两个数据中的最大值
                                **练习二:给定一个数据,确定它是奇数还是偶数
                        c.格式三
                                if (比较表达式1) {
                                        语句体1;
                                } else if (比较表达式2) {
                                        语句体2;
                                } else if (比较表达式3) {
                                        语句体3;
                                } else if (比较表达式4) {
                                        语句体4;
                                }
                                ...
                                else {
                                        语句体n + 1;
                                }
                                执行流程:
                                        1).计算比较表达式1的值
                                                如果是true,执行语句体1,整个if语句结束
                                                如果是false,计算比较表达式2的值,如果是true,执行语句体2,整个if语句结束
                                                                                                                如果是fasle,计算比较表达式3的值,如果是true,执行语句体3,整个if语句结束
                                                如果所有的比较表达式都为false,则执行else语句,执行语句n + 1,整个if语句结束                                                                                                                                如果是false,执行语句体4...
                                注意事项:
                                        else语句可以省略,但是建议永远不要省略,可以对范围外的错误进行提示
                                **练习一:获取三个数据中的最大值
                2.2).switch语句
                                switch(表达式) {
                                        case 值1:
                                                语句体1;
                                        break;
                                        case 值2:
                                                语句体2;
                                        break;
                                        ...
                                        default:
                                                语句体 n + 1;
                                        break;
                                }
                                执行流程:
                                        1).计算表达式的值
                                        2).将表达式的值和case后面的值进行匹配,如果相同就执行对应的语句,否则执行default控制的语句
                                注意事项:
                                        a.表达式的值:byte,char,short,int,枚举,String
                                                常用的是int,String
                                        b.case后面只能是常量,不能是变量,并且多个case后面的值不能出现相同的
                                        c.default可以省略,建议永远不要省略,因为default可以对不正确的情况给出提示
                                        d.最后一个break可以省略,但是建议永远不要省略,如果其他位置的break省略,会出现case穿透
                                case穿透
                                ***练习题:给出月份,判断季节(春,夏,秋,冬),分别使用if语句,switch语句完成
                                        3 4 5        --> 春天
                                        6 7 8        --> 夏天
                                        9 10 11        --> 秋天
                                        12 1 2        --> 冬天
                                switch语句的结束条件:
                                        1).遇到break就结束了
                                        2).执行到switch的右大括号就结束了
        3.循环结构
                3.1).for循环
                                a.为什么存在循环?
                                        提高了代码的复用性(重复利用性)
                                for (初始化表达式; 条件表达式; 循环后的操作表达式) {
                                        循环体;
                                }
                                -----------------------------------------------------
                                初始化表达式;
                                while(判断条件语句) {
                                        循环体;
                                        控制条件语句;
                                }
                                执行流程:
                                        1).执行初始化表达式
                                        2).执行条件表达式,看其返回值是true还是false
                                                        如果是true,就继续执行
                                                        如果是false,就结束循环
                                        3).执行循环体
                                        4).执行循环后的操作表达式
                                        5).回到第2步,继续往下进行
                                注意事项:for循环结束之后,里面的变量会被释放(重点!!!)
                                        for (int i = 1;i <= 10 ;i++ ){
                                                int b = 0;
                                                System.out.println("i = " + i);
                                        }
                                        //i = 5;//错误: 找不到符号
                                        //b =  2;//错误: 找不到符号
                                **求和思想(重点!!!)
                                **练习一:计算水仙花数
                                **练习二:计算水仙花数的个数,统计思想(重点!!!)
                3.2).while循环
                                初始化表达式;
                                while(判断条件语句) {
                                        循环体;
                                        控制条件语句;
                                }
                                执行流程:
                                        1).执行初始化表达式
                                        2).执行判断条件语句,看起返回值是true还是false
                                                        如果是true,就继续执行
                                                        如果是false,就结束循环
                                        3).执行循环体
                                        4).执行循环后的操作表达式
                                        5).回到第2步,继续往下进行

九 . 循环结构
        1).do...while循环
                定义格式:

                        初始化语句;//int i = 1;
                        do {
                                循环体语句;
                                控制条件语句;//i++;
                        } while(判断条件语句);
                执行流程:
                        1).执行初始化语句
                        2).执行循环体语句
                        3).执行控制条件语句
                        4).执行判断条件语句,看其返回值是true还是false
                                        如果是true,就继续执行
                                        如果是false,就结束循环
                        5).回到第2步继续向下执行
        2).三种循环结构的区别(重点!!!)
                a.for循环和while循环必须先判断条件是否成立,条件成立才会执行循环体
                b.do...while循环至少执行一次循环体
                c.for循环与while循环的区别:
                        如果你想在循环结束后,继续使用控制条件的那个变量,用while循环
                        否则,用for循环,不知道使用哪个循环就使用for循环,因为变量及早的从内存中释放,提高了内存的使用效率
        3).死循环
                * 两种最简单的死循环格式:
                        while(true) {

                        }
                        System.out.println("------------------");
                        for (; ; ) {
                               
                        }



十 . 控制跳转语句(重点!!!)
        1.break语句
                应用场景:switch,循环
                大白话:跳出循环
        2.continue语句
                应用场景:循环
                大白话:终止本次循环,继续下次循环
        3.return语句
                应用场景:结束方法
                大白话:结束方法
十  一   .方法(重点!!!)
        1.概述
                a.为什么需要方法?
                        提高代码的复用性
                案例分析:输出10次HelloWorld,再输出10次HelloWord...
                b.什么是方法?
                        完成特点功能的代码块
        2.格式
                修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2) {
                        方法体语句;
                        return 返回值;
                }
                方法的格式说明:
                        a.修饰符:目前我们固定写public static
                        b.返回值类型:就是该方法需不需要返回一个结果,此处填的是该结果的数据类型,也可以没有,没有就写void
                        c.方法名:就是合法的标识符,针对方法,如果是一个单词全部字母小写,如果是多个单词,从第二个单词开始首字母大写
                        d.参数:
                                形式参数
                                实际参数
                        e.参数类型:就是参数的数据类型
                        f.参数名:就是合法的标识符,针对变量,如果是一个单词全部字母小写,如果是多个单词,从第二个单词开始首字母大写
                        g.方法体语句:就是完成特定功能的代码
                        h.return 结束方法
                        i.返回值,就是执行功能代码后的结果,由return带给调用者
        3.如何定义一个方法
                1.给什么:给两个int数,int a,int b
                2.要什么:要两个int数的和-->return 5-->明确了返回值类型为int
        4.注意事项
                没有返回值的方法:
                        public static void add2(int a,int b) {//int a = 2;int b = 3;
                                int sum = a + b;
                                System.out.println(sum);
                        }
                有返回值的方法:
                        public static int add(int a,int b) {//int a = 5;int b = 10;
                                int sum = a + b;
                                return sum;
                        }
                方法的调用:
                        a.单独调用,如:add2(2,3);但是对于有返回值的方法,单独调用没有意义
                        b.输出调用,如System.out.println(add(5,10));但是对于返回值为void的方法这样使用不可以
                        c.赋值调用(推荐),如:int s = add(5,10);s中存放的就是调用add方法返回的结果;但是对于返回值为void的方法这样使用不可以
                方法的注意事项:
                        1).方法不调用不执行
                        2).方法与方法是平级关系,不能嵌套定义
                        3).方法中定义的参数之间用逗号隔开
                        4).调用方法的时候不用传递数据类型
                        5).如果方法有明确的返回值,一定要用return带回一个值
        5.方法重载
                在同一个类中,方法名相同,参数列表不同,与返回值类型无关
                什么是参数列表不同呢?
                        1).参数个数不同
                        2).参数个数相同,参数类型不同:如add(int a,int b);add(double a,double b)
                        3).参数个数相同,参数顺序不同,如add(int a,double b);add(double a,int b)-->不过一般不这么写,因为两个方法功能是一样
        **练习:比较两个数据是否相等:
                        1.两个int数
                        2.两个double数


十二 . 数组(重点!!!)
        1.概述_为什么需要数组?
                *为了存储同种数据类型的多个值
                *关于数组:
                        a.数组是用来存储同一数据类型的多个值的集合,可以将数组看成是一个容器
                        b.数组既可以存储基本数据类型,也可以存储引用数据类型
                *数组的定义格式:
                        数据类型[] 数组名 = new 数据类型[数组长度];
                        如:
                                存储基本数据类型:
                                        int[] studnetAges = new int[100];
                                存储引用数据类型:
                                        String[] studentNames = new String[100];
        2.动态初始化
                1).什么是初始化?
                        就是为数组开辟连续的内存空间,并为每个数组元素赋值
                2).什么是动态初始化?
                        只给定数组长度,由系统给出每个元素的初始化值
                3).动态初始化格式:
                        数据类型[] 数组名 = new 数据类型[数组长度];
                4).不同数据类型使用动态初始化会有不同的默认值:
                        整数类型:byte,short,int,long默认初始化值都是0
                        浮点类型:float,double默认初始化值都是0.0
                        布尔类型:boolean默认初始化值false
                        字符类型:char默认初始化值'\u0000'
                5).关于直接打印数组名得到的内容的解释:
                [I@19bb25a分析:
                        [代表是数组,几个就代表几维
                        I代表是int类型
                        @是固定的
                        19bb25a代表的是数组的地址值
        3.内存分配
                a.栈内存:存储局部变量
                b.堆内存:存储new出来的数组/对象
                c.方法区:面向对象部分讲解
                d.本地方法区:和系统相关
                e.寄存器:给CPU使用
        4.内存图解
                **绘图: 一个数组的内存图解
                **绘图: 两个数组的内存图解
        5.静态初始化
                1).什么是静态初始化?
                        在定义数组的时候,直接为每个数组元素赋值
                2).静态初始化格式:
                        数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}
                        简化格式:
                        数据类型[] 数组名 = {元素1,元素2,...};
        6.数组操作的两个常见小问题
                a.数组索引越界异常(ArrayIndexOutOfBoundsException)
                        产生原因:访问了不存在的索引
                b.空指针异常(NullPointerException)
                        产生原因:数组已经不指向堆内存了,你还用数组名去访问元素
        **定义一个数组,分别使用动态初始化和静态初始化存储学生姓名,学生姓名为:张三,李四,王五
        ****引用数据类型:数组,类,接口,枚举
        7.数组的操作
                a.遍历:拿到数组中的每一个元素
                        * 数组的长度:arr.length
                        * 数组的最大索引:arr.length - 1
                b.获取最值
                c.反转


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马