黑马程序员技术交流社区

标题: java基础辅导之我的笔记 [打印本页]

作者: JYcainiao    时间: 2015-10-16 21:15
标题: java基础辅导之我的笔记
今天是第一天课,课程比较简单,做了一些笔记,虽然作用不大,但也是为了以后回顾起来方便,希望版主不要删掉我的帖子啊  这都是我上课自己一个字一个字打出来的   记录我自己的学习路程



一、计算机
        1、计算机 = 硬件 + 软件
        2、软件 = 数据 + 指令
        3、计算机语言
                A:机器语言:0和1
                B:汇编语言
                C:高级语言:C C++ C# JAVA
        4、人机交互
                A:命令行方式
                B:图形图像化方式
        5、快捷键
                win + D        快速显示桌面
                Alt + Shift + N        新建文件夹
        6、常用DOS命令【掌握】
                d:回车        盘符切换
                dir                                //列出当前目录下的文件及文件夹
                md(make directory)                //创建目录
                rd(remove directory)                //删除目录
                cd(change directory)                //进入制定文件夹
                .                                //当前目录
                ..                                //上一级目录
                cd\                                //退回到当前根目录       
                del(delete file)                //删除文件
                exit                                //退出dos命令行
                cls(clear screen)                //清屏
                /                                //正斜杠
                \                                //反斜杠

                notepad                                //创建文件
                       
                删除带内容的文件夹
                        rd /s 文件夹名称        // 删除时询问一下
                        rd /s /q 文件夹名称        //强制删除
二、Java语言概述
        1、java之父        詹姆斯·高斯林
                Sun公司开发
                Sun被Oracle公司收购       
        2、平台版本
                JavaSE        //标准版   winForm 微软开发桌面程序
                JavaME        //微型版
                JavaEE        //企业版
        3、java特点
                A:开源
                B:跨平台
        4、
                JVM                java virtual machine java虚拟机
                JRE                Java Runtime Environment java运行环境
                JDK                Java Development KIT java开发工具包
                JDK>JRE>JVM
                JDK中包含JRE        因为开发后要运行
        5、跨平台原理
                Java程序是运行在JVM里面的。编写的Java程序可以借助对应平台版本的JVM在不同系统平台上运行

三、HelloWorld案例和环境变量配置
        class HelloWorld {                                //左大括号跟上一排 前面                                                          加空格
        public static void main(String[] args) {
                System.out.println("Hello,World");        //碰到左大括号下一拍要缩                                                  进   用Tab键
        }
}
        编译:javac HelloWorld.java--------> HelloWorld.class
        运行:java HelloWorld

        2.常见错误
                A:文件扩展名
                B:关键字大小写问题
                C:大小括号好成对写
                D:中英文标点符号问题

        3.path的环境变量
                A:作用:在任何路径下都可以访问jdk的命令
                B:怎么配置
                ①计算机右键-----属性-----高级系统选项----高级----环境变量--系统环境变量---path--编辑---在最前面加上bin的路径,后面加个;


                ②新建

                JAVA_HOME   ---  JDK根目录
                path       ---   %JAVA_HOME%\bin;……

四.Java语言的书写格式(约定俗成)
        A:大括号要对齐,并且成对写
        B:左大括号前面要有空格  
        C:遇到左大括号要缩进 用Tab键
        D:方法和程序块之间加空行让程序看起来清晰
        E:并排续剧之间要加空格,例如for语句
        F:运算符两侧加空格

五、注释、关键字、标识符
        1、注释
                用来解释说明程序
                //单行注释可以用来嵌套
                /*
                多行注释不允许嵌套
                */
                /**
                文档注释
                */

        2、关键字
                描述:被Java语言赋予特定含义的单词
                特点:组成关键字的字母全部小写
                关键字注意事项
                        A:goto和const作为保留字存在,目前并不适用
                        B:类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
        3、标识符
                概述:就是给类,接口,方法,变量等起名字时使用的字符序列
                规则:
                        A:英文大小写字母
                        B:数字字符
                        C:$和_
                注意事项:
                        A:不能已数字开头
                        B:不能是Java中的关键字
                        C:区分大小写
        4、标识符常见命名规则       
                包(其实就是文件夹,用于解决相同类名的问题)
                        报名要求全部小写,一般都是公司的域名倒着写
                        例如:        www.heima.com
                                com.heima.包的作用
                类或者接口
                        如果是一个单词,要求首字母大写,如果是多个单词,要求每个单词首字母大写(驼峰命名)
                        例如:        DemoStudent
                方法和变量
                        如果是一个单词,每个字母都小写,如果是多个单词,从第二个单词开始首字母大写
                        例如:        getName()  
                常量
                        如果是一个单词,所有字母大写,如果是多个单词,也是所有字母大写,但是用下划线分开。
                        例如:        MAX
                                MAX_NUMBER
作者: JYcainiao    时间: 2015-10-19 21:08

        1、常量
                ①在程序的运行过程中,其值不可以发生改变的量;
                ②字面值常量
                        A:字符串常量                用双引号括起来的内容
                        B:整数常量                所有整数         
                        C:小数常量                所有小数
                        D:字符常量                用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
                        E:布尔型常量                比较特殊,只有true和false
                        E:空常量                        null(数组部分讲解)
                ③自定义常量(面向对象)

        2、进制概述
                ①什么是进制
                        就是进制位,是人们规定的一种进位方法。对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制就是逢八进一,十进制就是逢十进一,十六进制就是逢十六进一。
                        例如一周有七天,七进制,一年有十二个月,十二进制
                ②十进制的由来
                        十进制的由来是因为人类有是个手指
                ③二进制的由来
                        其实二进制来源于中国,请看史料记载
                ④八进制的由来
                ⑤十六进制的由来
                ⑥不同进制表现同一个数据的形式特点
                       
        3、不同进制的表现形式
                ①二进制的数据表现形式
                        由0,1组成,以0b(b可以大写也可以小写)开头
                ②八进制的数据表现形式
                        由0-7组成,以0开头
                ③十进制的数据表现形式
                        由0-9组成。整数默认是十进制的。
                ④十六进制额数据表现形式
                        由0-9和a-f(大小写均可)组成,以0x开头
                例如:100的不同进制表现
                        二进制:         0b1100100
                        八进制:         0144
                        十六进制:0x64
                        十进制:         100       
        4、进制的转换
                任意进制到十进制
                        系数:每一位上的数据
                        基数:x进制,基数就是x
                        权:在右边,从0开始编号,对应位上的编号即为该位的权。
                        结果:把系数 * 基数的权次幂相加即可
               
                十进制到任意进制的转换原来
                        除基倒取余    除以基数得到余数  倒着取余数  就是该进制的表现形式
        5、快速的进制转换法
                ①8421码及特点
                        8421码是中国大陆的叫法,8412码是BCD代码中最常见的一种。在这种编码方式中每一位二进制码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码;
                        1   1   1   1   1   1   1   1
                       128  64  32  16   8   4   2   1
               
               
                ②通过8421码的方式进行二进制和十进制的相互转换
                ③二进制到八进制的简易方式
                        二进制从右开始,每三位对应一个八进制数的位,不足补0
                ④二进制到十六进制的简易方式
                        二进制从右开始,每四位对应一个十六进制数的位,不足补0
                       

        6、原码  反码  补码【计算机在对数据进行存储和运算的时候,都是以补码额形式操作的。】
                ①为什么要学习原码反码补码?
                        后面要学习强制类型转换,如果不知道有元反补会看不懂结果。
                ②有符号数据表示法的几种方式
                        原码
                                就是二进制定点表示法,即最高位符号位,“0”表示正“1”表示负,其余位表示数值的大小
                                通过一个字节,也就是8个二进制位表示+7和-7
                                0(符号位) 000 0111        +7原码
                                1(符号位) 000 0111        -7原码
                       
                        反码
                                正数的反码与其原码相同;负数的反码是对其反码逐位取反,但符号位除外。
                                0(符号位) 000 0111        +7反码
                                1(符号位) 111 1000        -7反码
                       
                        补码
                                正数的补码与其原码相同;负数的补码是在其反码的末位加+
                                0(符号位) 000 0111        +7补码
                                1(符号位) 111 1001        +7补码
                                          正数         正数的元反补都一样             负数  负数的元反码有区别
                                           +7                                      -7
                                原码   0 000 0111                         1 000 0111   原码和对应的正数最高位不一样 为1
                                反码   0 000 0111                         1 111 1000   反码最高位不变  其余数值位取反
                                补码   0 000 0111                         1 111 1001   补码在原码的基础上末位+1

        7、变量的概述及格式
                ①什么是变量?
                        在程序执行的过程中,其值在指定范围内可以发生改变的量
                ②变量的定义格式
                        ⑴数据类型 变量名 = 初始化值;;
                        ⑵数据类型 变量名;
                        变量名 = 初始化值;
                ③为什么要定义变量
                        用来不断的存放同一类型的常量,并可以重复使用。

        8、数据类型的概述和分类
                ①为什么有数据类型
                        java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
                ②java中数据类型的分类
                        A:有基本数据类型和引用数据类型
                                a、基本数据类型(4类八种)
                                        ⑴整数型                  占用内存        大小范围
                                                byte           1个字节        -128~127
                                                short           2个字节        -2^15~2^15-1
                                                int           4个字节        -2^31~2~31-1
                                                long           8个字节        -2^63~2^63-1 (如果long类型要加L进行标识,最好加L,因为小写l很像数字1)
                                        ⑵浮点型
                                                float           4个字节        -3.403E38~3.40E38        E是10的基数  后面的308是次幂
                                                double           8个字节        -1.798E308~1.798E308        (小数默认是double类型的,float类型需要在数据后面加f)
                                        ⑶字符型
                                                char           2个字节        0~65535   可以存储一个汉字,因为汉字也是两个字节
                                        ⑷布尔型
                                                boolean           1个字节        true,false
                                       
                                        ⑸注意:         整数,默认类型是int,如果要定义long类型时,最好在后面加个大L标识,防止定义数值大于int造成错误。
                                                 小数,默认类型是double,如果要定义float类型时,必须在定义数值后面加个f标识。
                       
                                       

                        引用数据类型(接口,)
                                面向对象部分讲解
作者: JYcainiao    时间: 2015-10-19 21:09
9、数据类型转换
                隐式转换(从小到大会自动转换)
                        当小的数据类型和大的数据类型进行运算时,小的数据类型会自动提升为大的数据类型,这就是隐式转换
                        byte,short,char --> int --> long --> float --> double
               
                强制转换(从大到小须强制转换)
                        当要把大的数据类型赋值给小的数据类型是,需要加上强转符号-->()括号里面写小的数据类型。

                【注意:byte,short,char之间不能进行隐式转换,因为他们进行运算时,都是自动提升为int类型进行运算的。】

        10、面试题
                byte b1 = 3;
                byte b2 = 4;
                byte b3 = b1 + b2;        //编译出错,可能损失精度;
                byte b4 = 3 + 4;        //编译通过,运行b4 = 7;

                原因:        byte b3 = b2 + b1;
                        A:【byte与byte、short、char进行运算的时候,都会自动提升为int类型进行运算】,两个int类型的变量相加,结果还是int了性,把大的int类型赋值给小的byte,可能损失精度。
                        B:b1和b2是两个变量,编译器是不知道变量里面的具体数值的,两个byte类型的变量相加,其结果有可能超出byte范围,所以有可能会损失精度。
                       
                        byte b4 = 3 + 4;
                        java有常量优化机制。3和4是两个整数常量,编译器在编译的时候,就已经把3+4的结果7算出来了,然后它再判断7在不在byte 的取值范围内,所以不报错。
                                               
                字符串和数据类型的运算
                        任何数据类型用 + 与字符串相连接都会产生新的字符串,这里的 + 是连接符。
                        打印结果加()是提升()里面的运算顺序。
               
                ASCII码表
                        'a' = 97
                        'A' = 65
                        '0' = 48
        11、运算符
                ①什么是运算符?
                        就是对常量和变量进行操作的符号
                ②运算符的分类
                        算术运算符
                        赋值运算符
                        关系运算符
                        逻辑运算符
                        位运算符
                        三元运算符
                ③算数运算符有那些?
                        “+,-,*,/,%,++,--”
                        【注意事项】:
                                ⑴+ 在java中有三种作用,代表正号,做加法运算,字符串的连接符。
                                ⑵整数相除只能得到整数,如果想要得到小数,必须把数据变化为浮点数类型。(只变化一个就可以,另一个会自动提升)
                                ⑶/运算符获取的是除法操作的商,%获取的是除法操作的余数
                                ⑷%运算符
                                        a.当左边的绝对值小于右边的绝对值时,结果是左边
                                        b.当左边的绝对值等于右边或是右边的倍数时,结果为0
                                        c.当左边的绝对值大雨右边的绝对值是,结果是余数
                                        d.%运算符结果的符号只和左边有关系,与右边无关
                                        e.任何一个正整数%2的结果不是0就是1可以用来当作切换条件。
                                ⑸++  --  运算符(隐含有强制类型转换)
                                        A.单独只用
                                                放在操作数的前面和后面结果一样。(这种用法是我们比较常见的。)
                                        B.参与运算使用
                                                a.放在操作数的前面(左边),先自增或者自减,然后再参与运算。
                                                b.放在操作数的后面(右边),先参与运算,再自增或者自减。


                                ++    int x = 5;
                                      int y = x++;
                                      System.out.println(x+","+y);
                                第一步,运行x  ,值没变化;  第二步  运行 x++, x自增1  x=6;第三步  把第一步的值赋给y, y=5 ;


                                ++ int x = 5;
                                        x = x++;

                                第一步, 运行x  ,x值没变化;  第二步,运行x++  x自增1  x=6; 第三步  把第一步的值赋给x,  x= 5
                               
                               
                               
                               
                                ++    int x = 5;
                                      int y = x++;
                                      System.out.println(x+","+y);

                                      可以这样理解
                                        临时存储变量temp

                                          y = x++等同于   先创建一个临时存储变量temp,将x的值赋给temp  temp = x = 5;   然后x自增,x=6;然后在拿着临时存储变量temp里的值 赋给y   y = temp = 5




                ④赋值运算符
                        基本的赋值运算符:=                        把右边的值赋给左边(左边必须是变量)
                       
                        扩展的赋值运算符:+= -= *= /= %=                把左右两边的值进行扩展运算,再赋值给左边(左边必须是变量)
                                        特点: 扩展的赋值运算符本身含有强制类型转换
                ⑤关系运算符(比较运算符,条件运算符)
                        ==,!=,>,<,>=,<=
                        【注意事项】:无论操作是简单还是复杂,结果都是boolean类型
                                        ==不能写成=   前面是比较运算符  后面是赋值运算符
作者: JYcainiao    时间: 2015-10-19 21:11
一、   java中的运算符
        算术运算符
               





        逻辑运算符
                &逻辑与 |逻辑或 ^逻辑异或 !逻辑非
                & 两边都为true时,结果为true;只要有一边结果为false,结果就为false【遇false则fasle】
                | 只要有一边为true 结果就为true,两边都为false时,结果为false【遇true则true】
                ^ 两边结果一样时,结果为false,结果不一样时,结果为false【两边相同为fasle,两边不同为true】
                ! 取反
               
                &&(短路与) ||(短路或)
                &&  左边为fasle时,右边不参与运算,左边为true时,计算右边
                ||  左边为true时,右边不参与运算,左边为false时,计算右边

                & 和 && 区别:【结果一样,& 左右都运算, && 左边为false,右边不执行】
                | 和 || 区别:【结果一样,| 左右都运算, || 左边为true,右边不执行】

                开发常用的: && || !【&&和||】会稍微节省点时间,所以实际开发中应用会多点
       
        位运算符【对二进制进行操作】
                &位与 |位或 ^位异或 ~(按位取反,单目运算符)        二进制情况下进行运算
               
                & 同为1 取1 有0取0
                | 有1取1 同为0 取0
                ^ 相同取0 不同取1
                        【^特点】 a ^ b ^ b = a    一个数据位异或另一个数据两次,该数据不变


                例题:int a = 1,b = 2;要求在不使用第三方变量的前提下,交换a和b的值;
                     
                     a = a + b; //a = a + b = 3
                     b = a - b;        //b = a + b - b = 1
                     a = a - b;        //a = a + b - b = 2


                     a = a ^ b;        //a = a ^ b;
                     b = a ^ b;        //b = a ^ b ^ b = a
                     a = a ^ b;        //a = a ^ b ^ a = b



                ~ 内存位取反
                        例题:int ~7  结果为-8
                        00000000 00000000 00000000 00000111 整数原码补码反码都一样
                        11111111 11111111 11111111 11111000 ~7的结果   也是补码 是负数 求出原码
                        11111111 11111111 11111111 11110111 负数的补码-1是反码  
                        10000000 00000000 00000000 00001000 反码取反结果是原码  -8
               
                <<位左移                        结果是乘以(2的左移位次幂)
                >>(有符号)位右移        结果是除以(2的右移位的次幂)  高位根据数据去补   高位为0就补0  高位为1就补1
                >>>(无符号)位右移        结果是除以(2的右移位的次幂)  高位补0

               

        三元运算符
                格式:(关系表达式)?(表达式1):(表达式2); 关系表达式为true 返回表达式1的结果;关系表达式为false 返回表达式2的记过

二、键盘录入
        格式:(记住)
                1、导包:
                        格式
                                import java.util.Scanner;(写在类上面)
                        位置
                                在class上面
                2、创建键盘录入对象
                        格式
                                Scanner sc = new Scanner(System.in); //创建键盘录入函数
                3、通过获取录入的数据
                        格式
                                int x = sc,nextInt(); //调用输入的值   需要调用几次  就写几次

二、流程控制语句
        1、什么是流程控制语句
                可以控制程序的执行流程。
       
        2、流程控制语句的分类
                A:顺序结构
                B:选择结构
                        if语句
                        switch语句
                C:循环结构
                        for语句
                        while语句
                        do……while语句
        2、选择结构的分类
                if语句
                switch语句
        3、if语句有几种格式【注意事项】;a、比较表达式无论简单还是复杂,结果必须是boolean类型
                                        b、if语句{}可以省略,省略后只能控制最近的一条有效语句。注: int x = 12;是两条语句,即 int x; x = 12;
                                        c、一般来说,有左大左括号就没有分号,有分号就没有左大括号。
                                        d、{}最好不要省略
                                        e、例题:  boolean s = false;
                                                if(s = true){
                                                        Stytem.out.print("s = " + s);
                                                }
                                           打印结果是 s = true  这个s是boolean 条件表达式 执行过程是 先给s赋值为true 然后判断 ,结果为true  执行括号里面的语句
                ① if(比较表达式) {
                        语句体;
                }
                执行流程,先计算表达式的值,看其返回值是true还是false  如果是true  执行语句体;如果是false  不执行语句体

                ②if(条件表达式) {
                        执行语句1;
                }
                 else {
                        执行语句2;
                 }【if else 执行语句可以是输出语句,但是三元运算符不可以讲解,三元运算符操作后必须要有一个结果
                        三元运算符可以实现的,if一定可以实现的,反之不成立】
                执行流程:        首先计算比较表达式的值,看其返回值是true还是false
                                如果是true  执行语句体1
                                如果是false 执行语句体2
               
                ③if(条件表达式1){
                        执行语句1;
                }
                else if(条件表达式2) {
                        执行语句2;
                }
                .
                .
                .
                else {
                        执行语句n;
                }
                执行流程:首先计算机比较表达式1看其返回值是true还是false
                          如果是true 就执行语句1,if语句结束
                          如果是fasle 接着计算比较表达式2 看其返回值是true还是false
                          如果是true 就执行语句2,if语句结束
                          如果是false 接着计算比较表达式3 看其返回值是true还是false
                          如果都是false 就执行语句体 n+1
                【注意事项】 最后一个else可以省略 但是不建议省略 ,可以对范围外的错误进行提示


        4、switch语句
                格式:   switch(表达式){ 【switch后面表达式的值必须是 byte short char int ; jdk5.0 多了个枚举;jak7.0 多了个字符串String】
                                case 值1: 【这里的case的值必须是常量值】
                                        语句体;
                                break;【break 是 跳出】
                                case 值2:
                                        语句体;
                                break;
                                case 值3:
                                        语句体;
                                break;
                                case 值4:
                                        语句体;
                                break;
                                  .
                                  .
                                  .
                                 default:
                                        语句体n+1;
                                 break;               
                }
                执行流程  先计算表达式的值,然后和case后面的匹配,如果有就执行相应的语句,否则就执行default控制的语句
                【注意】 case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的常量
                        default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示
                        特殊情况:
                                case 就可以把值固定

                        break最后一个可以省略,其他最好不要省略,因为可能会出现 case穿透现象,建议不省略
                        default可以在任意位置,建议在最后(如果放到前面,也是最后判断的)
                        switch语句遇到break就结束了    或者遇到switch的右大括号也可以结束
               
                if语句和switch语句的区别
                        switch 建议判断固定值的时候用
                        if建议判定区间或范围的时候用
                        switch语句能实现的  if一定可以实现
                        但是if能实现的  switch不一定可以 例如 无穷大

                【注意】 if语句的else和switch语句的default里面一般存放的都是错误的 或者 超出范围的情况




作者: 迷途老马    时间: 2015-10-19 22:24
加油,好好学习。天天向上
作者: 小穿钉    时间: 2015-10-20 08:41
总结的真好,有层次,




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