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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1135096823

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 1135096823 初级黑马   /  2018-1-29 13:55  /  879 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


常用DOS命令:

       win+R,然后cmd回车

常用命令:

       d:回车  盘符切换

       dirdirectory:列出当前目录下的文件及文件夹

       cdchange dlrectory)改变指定目录(进入指定目录)

                   进入cd目录;cd多数目录

                   回退cd..  ;    cd\

        cls:(clear screen)清屏

        exit:退出dos命令


HelloWorld案例的运行

        在命令行模式中,输入javac命令对源代码进行编译,生成字解码文件。

          javac原文件名.java

         编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行不需要添加.class扩展名。

         java 原文件名

注释

单行注释://注释文字

多行注释:/*注释文字*/

文档注释:/**注释文字*/

注意:

多行可以嵌套单行 单行不可嵌套多行

注释不会进入class文件当中

关键字:(被java语言赋予特定含义的单词)

         特点:

              组成关键字的字母全部小写



常量

     常量概述

            在程序执行过程中,其值不可以发生改变的量。

      常量分类

             字符串常量      用双引号括起来的内容(“HelloWorld”)

              整数常量         所有整数(12-23

              小数常量         所有小数(1234

              字符常量         用单引号括起来的内容(‘a’‘A’‘0’)

              布尔常量         较为特有,只有turefalse

              空常量             null(数组部分讲)

变量:

是内存中的一小块区域,在程序的执行过程中,其值可以在一定范围内发生改变。

         组成:

                   A 对区域要有限定

                           如何限定呢?用数据类型来限定。

                   B 必须对区域给一个名称

                           变量名

           C  区域内必须由内容

                           初始化值

            定义格式:

                  数据类型 变量名=初始化值

注意:   

               变量只能在它所属的范围内有效

               变量属于它所在的那对大括号

在父作用域中定义的变量在子作用域中是可以使用的,

但是在子作用域中定义的变量在父作用域中是不能使用的,因为出了这个大括号,里面的变量就被销毁了。



计算机存储单元

              计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”。计算机最小的储存单元叫“字节”bute(能申请到的最小存储单位 字节)

            1B(字节)=8bit

       1KB=1024B

       1MH=1024KB

       1TB=1024GB

数据类型:

Java是一种强类型语言,针对每一种数据都给出了明确的数据类型。

      数据类型分类:

       A:基本数据类型

        B:引用数据类型(类,接口,数组)

       基本数据类型:48

             A:整数            占用字节数

                    byte              1

              short              2

                     int                4

                    long               8

              B:浮点数

                    float                4

                    double             8

               C: 字符

                      char               2

                D:布尔

                     boolean            1

      注意:

              A:整数默认是int类型,浮点数默认是double类型

              B:定义long类型数据的时候,要加L或者l,建议加L

            定义float类型数据的时候,要加F或者f,建议加F



标识符:

      就是用来给包,类,方法,变量等起名字的符号

      组成规则:

             A:unicode字符

                  数字字符,英文大小写字母,   汉字(不建议使用)

              B:下划线  _

              C:美元符$

          注意事项:

               A:不能以数字开头

         B:不能是java中的关键字

     常见命名规则:

               A:基本要求

                   见名知意

             B: 常见的命名

                       a :包(其实就是文件夹,用于对类进行管理)

                 全部小写,多级包.隔开

                 举例:comcom.itheima

             b:

                一个单词首字母大写

                       StudentCar

                               多个单词每个单词的首字母大写

                                    HelloWorld

                         c :方法和变量

                                一个单词首字母小写

                      age,show()

                 多个单词组成从第二个单词开始没一个单词首字母大写

                      maxAge,getAge()

变量定义的注意事项:

                  A:变量未赋值,不能直接使用。

                  B:变量只在它所属的范围内有效

             变量属于它所在的那对大括号

                   C:一行上可以定义多个变量,但是不建议

类型转换:

                 隐式转换

            强制转换

     隐试转换:

                 Byte,short,char,--int--long--float—double

      强制转换:

        目标类型 变量名 = (目标类型)(被转换的数据类型)

           建议:数据做运算,结果应该是什么类型,就是什么类型接收,不要随意转换类型,否则会有精度损失。



变量参与运算 最小提升int类型,有更高类型提升更高类型。




Eclipse

1:基本使用

      A:创建Java项目:

           点击File或者在最左侧空白处,选择Java项目,在界面中写一个项目名称,然后Finish即可。

      B:创建包:展开项目,在源包src下建立一个包com.itheima

      C:创建类:在com.ithiema包下建立一个类HelloWorld

           在界面中写一个类名:HelloWorld,然后finish即可。

      D:编写代码

           HelloWorld类写main方法,在main方法中写一条输出语句:我是黑马程序员,我骄傲,我自豪。

      E:编译

           自动编译,在保存的那一刻帮你做好了

      F:运行

           选择要运行的文件或者在要运行的文件内容中

           右键 -- Run as - Java Application即可

           

2:基本配置

      A:行号的显示和隐藏

           显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。

           隐藏:把上面的动作再做一次。

                 

      B:字体大小及颜色

           a:Java代码区域的字体大小和颜色:

                 window -- Preferences --General -- Appearance -- Colors And Fonts -- Java -- Java Edit Text Font

           b:控制台

                 window -- Preferences --General -- Appearance -- Colors And Fonts -- Debug -- Console font

           c:其他文件

                 window -- Preferences --General -- Appearance -- Colors And Fonts -- Basic -- Text Font

                 

      C:窗体给弄乱了,怎么办?

           window -- Perspective -- ResetPerspective

                 

      D:控制台找不到了,怎么办?

           Window--Show View—Console

           

3:删除和导入项目

      A:删除项目

           选中项目 右键 删除

           从项目区域中删除

           从硬盘上删除

      B:导入项目

           在项目区域右键找到import

           找到General,展开,并找到

           Existing Projects into Workspace

           点击next,然后选择你要导入的项目

           注意:这里选择的是项目名称

辅助键快捷键:

        内容辅助键:

                    alt+/

              A:main方法

                   main,然后alt+/,回车

               B:输出语句

                     Syso,然后alt+/,回车

        快捷键:

                A:注释

                       单行 选中内容,ctrl+/,再来一次就是取消注释

                       多行  选中内容,ctrl+shift+/,取消注释ctrl+shift+\

                 B:格式化

                        ctrl+shift+f

                       右键 --  Source  -- Format

算数运算符基本方法:

              运算符:就是用于对常量和变量进行操作的符号

              表达式:用于算符连接起来的符合java的语法式子。不同于运算符连接的表达式是不同类型的表达式。     

              运算符分类:

                    算术运算符

                    赋值运算符

                 关系运算符

                 逻辑运算符

                三元运算符

算数运算符:

         

+  - *  / ,%   ,++  , --

               % 用于获取两个数据相除时候的余数

                /  用于获取两个数据相处时候的商

字符和字符串参与加法运算

      加法:

            字符参与加法运算,其实是拿字符在计算机中存储的数据值来参与运算的

            ‘A’            65

                 ‘a’           97

           ‘0’              48

               字符串参加加法运算,其实做的不是加法运算,而是字符串的拼接

任何类型变字符串类型 拼一个空字符串就行

       ++--:自增自减,用于对变量加1或者减1

         ++-- 既可以用在变量的后面,也可以用在变量的前面。

                 单独使用的时候,++或者放在变量前面或者后面,结果一样。

                 参与其它操作的时候:

                         ++在后面,先拿变量做操作,然后变量在++

                      ++在前面,先变量++,然后再拿变量做操作

         赋值运算符:

                  基本的赋值运算符:=

                  扩展的赋值运算符:+=-=*=/=

           +=的操作

                +=的左边和右边的数据做+,然后把结果赋值给左边

                注意:

             扩展的赋值运算符,隐含了强制类型转换

             有一个变量aa+=10

相当于 a=a的数据类型)(a+10

        关系运算符:

               ==,!=,>,>=,<,<=

               关系运算符的结果是boolean的类型。

        逻辑运算符:  &.,|,^,!      &&,||

             逻辑运算符用于连接关系表达式,在java中不可写成3<x<6

             &  falsfalse

       |  tureture

              ^ 相同则false,不同则ture

              !   turefalse,falseture

              &&&的结果一样

              |||的结果一样

           &&&的区别:

                  &&有短路效果,左边为false,右边不执行

             &左边无论是什么,右边都会执行。

            || 左边true   右边不执行

一个数^两次等于它本身

     三元运算符:

              关系表达式?表达式1:表达式2

           执行流程:

           A:计算机关系表达式的值,看是true还是false

                     B:    如果是true,表达式1就是结果

                           如果是false,表达式2就是结果

               三元:   关系表达式:int d = (a>b)?(a>c?a:c):(b>c?b:c);

   

键盘录入的基本步骤和使用:

        为了提高程序的灵活性,我们就把数据改进为键盘录入。

         如何实现键盘录入数据: 目前我们只能使用JDK提供的类Scanner.  

             如何使用Scanner获取键盘录入数据:

                A:  导包

                      import   java.util.Scanner;

                     在一个类中顺序: pack > import > class

                B: 创建键盘录入对象

                        Scanner sc = newScanner(System.in);

                C: 接收数据

                      int   i = sc.nextInt( );      


流程控制语句:(顺序,选择,循环)

        顺序结构

        选择结构:

               if语句  如果语句体中只有一行代码的时候可以省略{}

           if语句格式1

               if(关系表达式){

                              语句体;

}

                 执行流程:

           A:首先计算关系表达式的值,看是true还是false

           B:如果是true,就执行语句体

           C:如果是false,就不执行语句体

                           if 语句第二种格式:

if(关系表达式){

语句体1

}else{

语句体2

}

                       执行流程:

                             首先判断关系表达式看其结果是true还是flase

                 如果是true 就执行语句体1

                 如果是false就执行语句体2

           “if else” 可以替换三元运算符三元运算符不能替换”if else”


            if语句格式3

                if(关系表达式1){

            语句体1

}else if(关系表达式2{

         语句体2

}

……

else {

      语句体n+1;

}

                        执行流程:

                  A:计算机关系表达式1的值,看是ture还是false

                B: 如果是true ,就执行语句体1

                           C: 如果是false,就继续计算关系表达式2的值,看是true还是fa

                            D:如果是true ,就执行语句体2

                 E:如果是false,就继续计算关系表达式3.。。。

                   F:执行语句体

if 语句3  注意:

              如果第一个条件成立,那么后面的条件成立,也不会执行。

                if … else if   的效率比比多个if的效率要高


          switch语句:

           switch(表达式){

                 case 值:

                      语句体1

                      break;

                 case 值:

                      语句体2

                      Break;

                 …

                 default:

                      语句体 n+1;

                      Break;

                    }

           格式解释:

                 表达式:byte , short ,int ,char

                      JDK5以后可以是枚举

                      JDK7以后可以是字符串

                 case 后面的值:用来和表达式的值进行匹配的内容

                 break : 表示中断的意思

                 default : 所有的值都不匹配的时候,就执行default

            执行流程:

                 A: 首先计算表达式的值

                           B:拿着这个计算出来的值,依次和case后面的值进行比较一旦有匹配的就执行对应的语句体,在执行的过程中,遇到break结束

           C:如果所有的case都不匹配,就执行语句体n+1

case 的穿透效果,匹配成功后会执行体,直到结束命令。

循环结构:

for 循环语句的格式:

             for(初始化语句;判断语句条件;控制语句条件){

                 循环语句;

}

执行流程:

    A:执行初始化语句

    B: 执行判断条件语句,看其结果是true还是flase

        如果是false,就结束循环

        如果是true, 就继续执行

  C:执行循环体语句

    D:执行控制条件语句

   E: 回到B继续

跟踪变量变化的时候,输出写在for循环的循环体中

要输出最终结果的时候,写在for循环外边


        while循环语句格式:

           初始化语句;

               while(判断条件语句){

循环语句体;

控制条件语句;

}

       do…while循环的语句格式:

           初始化语句;

           do{

                 循环语句体;

                 控制条件语句;

           }while(判断条件语句)

            执行流程:

           A:执行初始化语句

           B:执行循环语句体

           C:执行控制条件语句

           D:执行判断条件语句,看是true还是false

                 如果是false,就结束循环

                 如果是true,回到B继续

虽然三种循环语句可以做相同的事情,但是它们还是有区别的:

        Ado…while循环至少执行一次循环体

        Bforwhile循环必须判断条件成立才可以执行循环体

    For循环和while循环有没有区别:

              For循环结束后,初始化的变量就不能被使用了。而while循环结束后,初始化的变量还可以使用。

            推荐使用循环的顺序:

              for – while --  do…while

break :   中断的意思

        使用场景:

               A:switch语句中

              B:循环中

         注意:

             离开使用场景是没有意义的

         continue :继续使用意思

          使用场景:

              循环中

          注意:

              离开使用场景是没有意义的

             作用:

              结束一次循环,继续下一次循环

              注意:

                   break:结束整个循环

                   continue:结束本次循环,继续下一次的循环


Random的概述和基本使用

               A:导包

                 import  java.util.Random;

          B:创建对象

           Random   r =new Random();

          C:获取随机数

           int number =r.nextInt(10);         (随机数个数)+(从那开始)

           获取数据的范数围:[0,10)包括0,不包括10

数组:    (编号=索引 0开始到数组的长度-1  数组名[索引)

                 leght(获取数组元素的个数)

             存储同一种数据类型的多个元素的容器。

        定义格式:

           A 数组类型[ ]  数组名;(推荐格式)

           B:数组类型  数组名 [ ];

         数组初始化:

     A:所谓的初始化,就是为数组开辟内存空间,并为数组中的每一个元素赋予初始值。

B:我们有两种方式可以实现数组的初始化

     a : 动态初始化   只给出长度,由系统给出初始化值

     b: 静态初始化    给出初始化值,由系统决定长度

           静态初始化:

                 数据类型[] 数组名 =new  数组类型[]{元素1,元素2…}

                 数组类型[] 数组名 ={元素1,元素2…}

           动态初始化:

                 数据类型[ ]  数组名= new 数据类型[数组长度;

      内存分配:

            存储的是局部变量。

                 局部变量就是定义在方法中的变量。

                 使用完毕立即回收(主方法结束栈回收)

            存储的是new 出来的东西,实体,对象

                    A:每一个对象都有地址值

                    B:每一个对象的数据都有默认值

                      byte,short.int.long,     0

                      float, double ,           0.0

                      char                 ‘\u0000’

                      boolean      false

                 C:使用完毕后,会在垃圾回收器空闲的时候被回收

                           指向不存在 回收)

数组操作常见问题:

        AArrayIndexOutOfBoundsException:数组索引越界异常

                   访问了不存在的索引

         B:NullPointerException:空指针异常

           数组已经不再指向堆内存的数据了,你还使用数组名访问元素

     引用类型:类,接口,数组

      常量,空常量,null,是可以赋值给引用类型的      

二维数组   

      其实就是元素为一维数组的数组。

     定义格式:

           A:数据类型[][] 数据名;(推荐的格式)

           B :数据类型数组名[][];

           C : 数据类型[]数组名[];

      初始化:

           A :动态初始化

           数据类型[][] 数组名 =new 数据类型[m][n];

           B :静态初始化

           数据类型[][] 数组名 =new 数据类型[][]{{元素…}{元素…}..}

           简易格式:

           数组类型[][] 数组名 ={{元素..}{元素…}…}   

          System.out.println():输出内容并换行

      System.out.ptintln():输出内容不换行


基本类型 不加new

静态数组 两种写法区别:

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

      arr ={2,3,4};  会报错

      arr = new int[]{4,5,6};  这个对


方法:

      其实就是完成特定功能的代码块

      定义格式:

          修饰符  返回值类型  方法名(参数类型 参数名1,参数类型 参数名2…{

                 方法体;

                 return  返回值;

}

   return 结束方法

      格式解释:

           A:修饰符  目前记住public static

           B : 返回值类型   用于限定返回值的数据类型

           C:方法名  为了方面我们调用方法的名字

           D:参数类型  用于限定调用方法时传入的数据的类型

           E : 参数名  用于接收调用方法时传入的数据的变量

                   F:方法体 完成功能的代码

                   Greturn  结束方法,并且把返回值带给调用者

                写一个方法有两个明确:

                             A:返回值类型   明确功能结果的数据类型

                             B:参数列表    明确有几个参数,以及参数的数据类型

                方法的调用:(有明确返回值的方法调用)

                       A:单独调用,没有意义

                       B:输出调用,有意义,但是不够好,因为我可能需要拿到结果进行进一步的操作

                       C:赋值调用,推荐使用方法

                    void修饰的方法的调用:

                                   只能单独使用

                方法重载:在同一个类中,出现了方法名相同的情况。

                方法重载特点:

                       方法名相同,参数列表不同。与返回值无关。

                       参数列表不同:

                                   参数的个数不同

                                   参数对应的类型不同

                不能出现方法名相同,参数列表也相同

                注意:

                       在调用方法的时候java虚拟机会通过参数列表的不同来区分同名的方法。

      方法的参数如果是基本数据类型:形式参数的改变不影响实际的参数。

                形式参数:用于接收实际参数的变量

                实际参数:实际参数与运算的变量

           如果方法的参数是基本数据类型:

                       形式参数的该变不影响实际参数

          如果参数是引用数据类型:

                       形式参数的改变直接影响实际参数


断点调试的作用及步骤:

      断点调试的作用:

           A:查看程序的执行流程

           B:调试程序

          断点:   就是一个标记

           不会的地方加

      如何加:

           在代码区域的左边双击即可

      如何运行加断点的程序:

           代码区域右键—Debug As—JavaApplication

                    弹出一个框框让我们选择是否进入debug视图,我们选择yes。并且把记住选择选上

             如何让程序往下执行:

                      F6

              看那些区域:

                     代码区域:看程序的执行流程

                     Debug区域: 看程序的执行流程

                     Variables:看变量的变化

                     Console:看程序的输入和输出  

               删除断点:

                     A:把加断点的的动作再来一遍

                     B:  Debug视图中找到Breakpoints,选中要删除的断点点击爽x即可
          断点必须加在有效的语句上。

面向对象:

      基于面向过程的编程思想。

      面向过程:

           强调的是每一个功能的步骤

      面向对象:

           强调的是对象,然后由对象去调用功能

表示现实世界的事物:

  属性: 就是事物的描述信息

  行为: 就是事物能够做什么

  Java语言最基本单位是类,通过类来实现现实世界事物的

       类:  是一组相关的属性和行为的集合

      对象:  就是该事物的具体体现

类的定义:   类是用来描述现实世界的事物的

       事物:

        属性      事物的描述信息

        行为       事物能够做什么

        类是如何和事物进行对应的:

        类:

        属性     成员变量

        行为     成员方法

  成员变量:

        位置不同:类中,方法外

        初始化值:不需要给初始化值

  成员方法:

        去掉static关键字

   使用一个类,其实就是使用该类的成员。(成员变量和成员方法)

  而我们要想使用一个类的成员,就必须首先拥有该类的对象。

  拥有一个类的对象创建一个对象

格式: 类名 对象名= new 类名();   

   访问成员:

  成员变量:对象名,变量名

  成员方法:对象名,方法名(可能有参数)

   成员变量跟随对象进入堆内存

成员变量和局部变量的区别:

  A:在类中的位置不同

        成员变量:类中,方法外

        局部变量:方法中或者方法声明上(形式参数)

  B: 在内存中的位置不同:

        成员变量: 堆内存

        局部变量:栈内存

  C:生命周期不同:

        成员变量:随着对象的创建而存在,随着对象的消失而消失

        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  D:初始化值得问题

        成员变量:有默认值

        局部变量:没有默认值。必须先定义,先赋值,后使用

  不让外界对象直接访问成员变量

        Private关键字

  private:

       是一个修饰符

        可以修饰成员变量,也可以修饰成员方法

        private修饰的成员只能在本类中被访问

  针对private修饰的成员变量,我们会相应的提供getXxx( )setXxx()用于获取和设置成员变量的值

     set没有返回值,get有返回值。

      如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近原则。局部变量name赋值给成员变量name

              this关键字就可以解决这个问题;

         This:代表所在类的对象引用

              方法被哪个对象调用,this就代表那个对象

        使用场景:

              局部变量隐藏成员变量

   构造方法:

              给对象的数据进行初始化

   格式:

              方法名和类名相同

没有返回值类型,连void都不能写

没有具体返回值

       通过new 关键字调用

      格式: 类名 对象名=new  构造方法(可能有可能没有参数…)     

      构造方法的注意事项:

      A:如果我们没有给出构造方法,系统将会提供一个默认的无参构造方法供我们使用  

      B:如果我们给出了构造方法,系统将不再提供默认的无参构造方法供我们使用。这个时候,如果我们想使用无参构造方法,就必须自己提供。

      推荐:自己给无参构造方法

        C:构造方法也是可以重载的

      成员变量赋值:

           A:setXxx()方法

           B:带参构造方法                  

但对于一个对象而言构造方法只能调用一次

但是set方法可以调用无数次

          所以set 方法可以用来给成员变量修改值。

类名作为形式参数:其实这里需要的是该类对象

如果方法的返回值是类名:其实返回的是该类的对象


nextline不能和其他的next方法在一起使用,否则会有问题

当你想输入一个数字和字符串的时候,我们只能使用next()来输入一个字符串


String: 字符串类

           由多个字符组成的一串数据

           字符串其本质是一个字符数组

      字符串的内容是存储在方法区的常量池里面的。是为了更方便字符串的重复使用

      构造方法:

           String(String original):把字符串数据封装成字符串对象

           String(char[] value):把字符数组的数据封装成字符串对象

           String(char[] value,int index,int count)把字符组中的一部分数据封装成字符串对象从index开始count

      注意: 字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的应该是对象中的数据。

      Object :是类层次结构中的根类,所有的类都直接或者间接的继承自该类。

      如果一个方法的形式参数是Object,那么这里我们就可以传递它的任意的子类对象。

      String类的判断功能:

      booleanequals (Object obj):比较字符串的内容是否相同

      booleanequalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

      booleanstartsWith(String str):判断字符串对象是否以指定的str开头

      BooleanendsWith(String str);判断字符串是否以指定的str结尾

      String类的获取功能:

      intlength():获取字符串的长度,其实也就是字符个数

      charcharAt(int index):获取指定索引处的字符

      intindexOf(String str):获取str在字符串对象中第一次出现的索引

      Stringsubstring(int start):start开始截取字符串

      Stringsubstring(int start ,int end):start 开始,到end 个后结束截取字符串

      String类的转换功能:

      char[]toCharArray():把字符串转换为字符数组

      StringtolowerCase(): 把字符串转换为小写字符串

      StringtoUpperCase(): 把字符串转换为大写字符串

      String

      去除字符串两端空格:

           Stringtrim()

      按照指定符号分割字符串:

           String[]split(String str)


StringBuilder : 是一个可以变的字符串。字符串缓冲曲区类。

      StringStringBuilder的区别:

           String的内容是固定的。

           StringBuilder的内容是可以改变的。   

      构造方法:

           StringBuilder()

      成员方法:

           publicint capacity():返回当前容量

           publicint length():返回长度(字符)

           容量:理论值

           长度:实际值

      添加功能:

           PublicStringBuilder append(任意类型):添加数据,并返回自身对象

      反转功能:

           PublicStringBuilder reverse()

   StringBuilderString的相互转换:

      StringBuilder----String

           PublicString toSting():通过toString就可以实现;

      String  ---- StringBuilder

           StringBuilder(Stringstr):通过构造方法就可以实现;







2 个回复

倒序浏览
1.1        对象数组概述
A:基本类型的数组:存储的元素为基本类型
int[] arr={1,2,3,4}
B:对象数组:存储的元素为引用类型
  Student[] stus=new Student[3];
  
Student代表一个自定义类
Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,
  都可以指向一个Student对象
2.1        集合概述
A:我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。
           为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,        就不能是一个基本的变量,而应该是一个容器类型的变量。
          
B:到目前为止,我们学习过了哪些容器类型的数据呢?
StringBuilder,数组。
        StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。
        所以,我们目前只能选择数组了,也就是我们前面学习过的对象数组。
         但是,数组的长度是固定的, 如果有时候元素的个数不确定的,我们无法定义出数组的长度,这个时候,java就提供了集合类供我们使用。
2.2.2        ArrayList删改查方法
A:获取元素
    public E get(int index):返回指定索引处的元素
B:集合长度
           public int size():返回集合中的元素的个数
C:删除元素
    public boolean remove(Object o):删除指定的元素,返回删除是否成功
    public E remove(int index):删除指定索引处的元素,返回被删除的元素
D:修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
2.2.3        ArrayList遍历
集合的遍历思想和数组的遍历思想相同
循环遍历容器,依次取出里面的元素即可
3.2        学生管理系统案例实现
3.2.1        创建学生类:       
3.2.1.1        案例代码九:
package com.itheima;
/*
* 这是我的学生类
*/
public class Student {
        //学号
        private String id;
        //姓名
        private String name;
        //年龄
        private String age;
        //居住地
        private String address;
       
        public Student() {
               
        }

        public Student(String id, String name, String age, String address) {
                this.id = id;
                this.name = name;
                this.age = age;
                this.address = address;
        }

        public String getId() {
                return id;
        }

        public void setId(String id) {
                this.id = id;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public String getAge() {
                return age;
        }

        public void setAge(String age) {
                this.age = age;
        }

        public String getAddress() {
                return address;
        }

        public void setAddress(String address) {
                this.address = address;
        }
       
}
3.2.2        学生管理系统界面实现:
3.2.2.1        案例代码十:

/*
* 这是我的学生管理系统的主类
*
* 步骤如下:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统的查看所有学生的代码编写
* D:学生管理系统的添加学生的代码编写
* E:学生管理系统的删除学生的代码编写
* F:学生管理系统的修改学生的代码编写
*/
1.1        IO流概述及分类
IO流用来处理设备之间的数据传输
   Java对数据的操作是通过流的方式
   Java用于操作流的类都在IO包中
          流按流向分为两种:输入流,输出流
1.2        FileWriter类使用
A:打开帮助文档
B:点击显示,找到索引,看到输入框
C:你要学习什么内容,你就在框框里面输入什么内容
          举例:Random
D:看包
java.lang包下的类在使用的时候是不需要导包的
E:看类的描述
        Random类是用于生成随机数的类
F:看构造方法
        Random():无参构造方法
                Random r = new Random();
G:看成员方法
           public int nextInt(int n):产生的是一个[0,n)范围内的随机数
                调用方法:
                        看返回值类型:人家返回什么类型,你就用什么类型接收
                        看方法名:名字不要写错了
                        看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的
                        int number = r.nextInt(100);
1.2.1        FileWriter向文件中写数据
A:FileWriter向文件中写数据操作步骤:
      a:使用FileWriter流关联文件
      b:利用FileWriter的写方法写数据
      c:利用FileWriter的刷新方法将数据从内存刷到硬盘上
      d:利用FileWriter的关流方法将释放占用的系统底层资源
   B:FileWriter方法:
构造方法
FileWriter(String fileName) 传入一个文件的路径
成员方法
void write(String str) 向文件中写str
void flush()  将内存中的数据刷新到文件中
void close()  关流释放系统底层资源
1.2.3        FileWriter其它写方法
void write(String str):写一个字符串数据
void write(String str,int index,int len):写一个字符串中的一部分数据
void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
void write(char[] chs):写一个字符数组数据
void write(char[] chs,int index,int len):写一个字符数组的一部分数据
3.2        缓冲流复制文本文件的两种方式
  利用缓冲流把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
  第一种方式:使用缓冲流不使用字符数组
  第二种方式:使用缓冲流使用字符数组
3.3        缓冲流的特有方法使用
BufferedWriter
                void newLine():写一个换行符,这个换行符由系统决定,不同的操作系统newLine()方法使用的换行符不同
windows:\r\n
linux:\n
mac:\r
BufferedReader
                String readLine():一次读取一行数据,但是不读取换行符
第4章        IO流相关案例
4.1        复制文本文件的5种方式
A:利用基本流一次读写一个字符
B:利用基本流一次读写一个字符数组
C:利用缓冲流一次读写一个字符
D:利用缓冲流一次读写一个字符数组
E:利用缓冲流的特有方法一次读写一个字符串
       
4.2        把集合中的数据写到文本文件
把ArrayList集合中的字符串数据存储到文本文件项目根目下的array.txt中
每一个字符串元素作为文件中的一行数据
/*
* 把ArrayList集合中的字符串数据存储到文本文件
* 每一个字符串元素作为文件中的一行数据
*
* 分析:
*                 A:创建集合对象
*                 B:往集合中添加字符串元素
*                 C:创建输出缓冲流对象
*                 D:遍历集合,得到每一个字符串元素,然后把该字符串元素作为数据写到文本文件
*                 E:释放资源
*/
public class ArrayListToFileTest {
        public static void main(String[] args) throws IOException {
                //创建集合对象
                ArrayList<String> array = new ArrayList<String>();
               
                //往集合中添加字符串元素
                array.add("hello");
                array.add("world");
                array.add("java");
               
                //创建输出缓冲流对象
                BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));
               
                //遍历集合,得到每一个字符串元素,然后把该字符串元素作为数据写到文本文件
                for(int x=0; x<array.size(); x++) {
                        String s = array.get(x);
                        bw.write(s);
                        bw.newLine();
                        bw.flush();
                }
               
                //释放资源
                bw.close();
        }
}

4.3        把文本文件中的数据读取到集合
   
从项目根目录下的array.txt文本文件中读取数据到ArrayList集合中,并遍历集合,每一行数据作为一个字符串元素



回复 使用道具 举报
数组:    (编号=索引 从0开始到数组的长度-1  数组名[索引)




                 leght(获取数组元素的个数)




             存储同一种数据类型的多个元素的容器。




        定义格式:




           A: 数组类型[ ]  数组名;(推荐格式)




           B:数组类型  数组名 [ ];




         数组初始化:




     A:所谓的初始化,就是为数组开辟内存空间,并为数组中的每一个元素赋予初始值。




B:我们有两种方式可以实现数组的初始化




     a : 动态初始化   只给出长度,由系统给出初始化值




     b: 静态初始化    给出初始化值,由系统决定长度




           静态初始化:




                 数据类型[] 数组名 =new  数组类型[]{元素1,元素2,…};




                 数组类型[] 数组名 ={元素1,元素2,…};




           动态初始化:




                 数据类型[ ]  数组名= new 数据类型[数组长度;




      内存分配:




           栈 : 存储的是局部变量。




                 局部变量就是定义在方法中的变量。




                 使用完毕立即回收(主方法结束栈回收)




           堆 : 存储的是new 出来的东西,实体,对象




                    A:每一个对象都有地址值




                    B:每一个对象的数据都有默认值




                      byte,short.int.long,     0




                      float, double ,           0.0




                      char                 ‘\u0000’




                      boolean      false




                 C:使用完毕后,会在垃圾回收器空闲的时候被回收




                        (   指向不存在 堆 回收)




数组操作常见问题:




        A:ArrayIndexOutOfBoundsException:数组索引越界异常




                   访问了不存在的索引




         B:NullPointerException:空指针异常




           数组已经不再指向堆内存的数据了,你还使用数组名访问元素




     引用类型:类,接口,数组




      常量,空常量,null,是可以赋值给引用类型的      




二维数组 :  




      其实就是元素为一维数组的数组。




     定义格式:




           A:数据类型[][] 数据名;(推荐的格式)




           B :数据类型数组名[][];




           C : 数据类型[]数组名[];




      初始化:




           A :动态初始化




           数据类型[][] 数组名 =new 数据类型[m][n];




           B :静态初始化




           数据类型[][] 数组名 =new 数据类型[][]{{元素…},{元素…},..};




           简易格式:




           数组类型[][] 数组名 ={{元素..},{元素…},…}   




          System.out.println():输出内容并换行




      System.out.ptintln():输出内容不换行









基本类型 不加new




静态数组 两种写法区别:




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




      arr ={2,3,4};  会报错




      arr = new int[]{4,5,6};  这个对



方法:


      其实就是完成特定功能的代码块


      定义格式:


          修饰符  返回值类型  方法名(参数类型 参数名1,参数类型 参数名2…){


                 方法体;


                 return  返回值;


}


   return 结束方法


      格式解释:


           A:修饰符  目前记住public static


           B : 返回值类型   用于限定返回值的数据类型


           C:方法名  为了方面我们调用方法的名字


           D:参数类型  用于限定调用方法时传入的数据的类型


           E : 参数名  用于接收调用方法时传入的数据的变量


                   F:方法体 完成功能的代码


                   G:return  结束方法,并且把返回值带给调用者


                写一个方法有两个明确:


                             A:返回值类型   明确功能结果的数据类型


                             B:参数列表    明确有几个参数,以及参数的数据类型


                方法的调用:(有明确返回值的方法调用)


                       A:单独调用,没有意义


                       B:输出调用,有意义,但是不够好,因为我可能需要拿到结果进行进一步的操作


                       C:赋值调用,推荐使用方法

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马