黑马程序员技术交流社区

标题: Java12期技术贴以及总结(下) [打印本页]

作者: 彼岸浮生梦    时间: 2018-4-3 01:18
标题: Java12期技术贴以及总结(下)

1.断点调试:

Eclipse的断点调试可以查看程序的执行流程和解决程序中的bug.

2.面向对象!!!(划重点)
面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求.
面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务).
属性---------成员变量(事物的属性)--------和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
行为---------成员方法(事物的行为)--------和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用
类:是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类)
对象:是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为)
例:(学生类)
public class Student {
        //成员变量
        //姓名
        String name;
        //年龄
        int age;
       
        //成员方法
        //学习的方法
        public void study() {
                System.out.println("好好学习,天天向上");
        }
       
        //吃饭的方法
        public void eat() {
                System.out.println("学习饿了要吃饭");
        }
}
学生测试类:
public class StudentDemo {
        public static void main(String[] args) {
                //格式:类名 对象名 = new 类名();
                Student s = new Student();
                //System.out.println("s:"+s); //com.itheima_02.Student@193c0cf
               
                //直接输出成员变量值
                System.out.println("姓名:"+s.name); //null
                System.out.println("年龄:"+s.age); //0
                System.out.println("----------");
               
                //给成员变量赋值
                s.name = "林青霞";
                s.age = 28;
               
                //再次输出成员变量的值
                System.out.println("姓名:"+s.name); //林青霞
                System.out.println("年龄:"+s.age); //28
                System.out.println("----------");
               
                //调用成员方法
                s.study();
                s.eat();
        }
}
封装,私有化:private关键字!  是一个权限修饰符。  可以修饰成员(成员变量和成员方法)    private修饰的成员只在本类中才能访问。
public class Student {
        String name;
        //int age;
        private int age;
       
        public void setAge(int a) {
                if(a<0 || a>200) {
                        System.out.println("你给的年龄有误");
                }else {
                        age = a;
                }
        }
       
        public int getAge() {
                return age;
        }
       
        public void show() {
                System.out.println("姓名是:"+name+",年龄是:"+age);
        }
}


package com.itheima_05;
/*
* 学生类的测试类
*/
public class StudentDemo {
        public static void main(String[] args) {
                //创建学生对象
                Student s = new Student();
                s.show();
               
                s.name = "林青霞";
                //s.age = 28;
                //s.age = -28;
                //s.setAge(-28);
                s.setAge(28);
                s.show();
        }

}
this关键字:代表所在类的对象引用方法被哪个对象调用,this就代表那个对象
在局部变量和成员变量重名的时候使用
构造方法:1.方法名和类名相同  2.没有返回值类型,void也米有  3.没有具体的返回值
3.API:
应用程序编程接口
4.Scanner类与String类
用Scanner类的方法可以完成接收键盘录入的数据
package com.itheima_01;
import java.util.Scanner;
/*
* Scanner:用于获取键盘录入的数据。(基本数据类型,字符串数据)
* public String nextLine():获取键盘录入的字符串数据
*/
public class ScannerDemo {
        public static void main(String[] args) {
                //创建键盘录入对象
                Scanner sc = new Scanner(System.in);
                //接收数据
                System.out.println("请输入一个字符串数据:");
                String s = sc.nextLine();
               
                //输出结果
                System.out.println("s:"+s);
        }
}
       String(Stringoriginal):把字符串数据封装成字符串对象
       String(char[] value):把字符数组的数据封装成字符串对象

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

StringBuilder:是一个可变的字符串。字符串缓冲区类。
String和StringBuilder的区别:
String的内容是固定的

StringBuilder的内容是可变的

5.集合
A:基本类型的数组:存储的元素为基本类型
int[] arr={1,2,3,4}
B:对象数组:存储的元素为引用类型
  Student[]stus=new Student[3];
  
Student代表一个自定义类
Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,

  都可以指向一个Student对象

package com.itheima;
/*
* 创建一个学生数组,存储三个学生对象并遍历
*
* 分析:
*                 A:定义学生类
*                 B:创建学生数组
*                 C:创建学生对象
*                 D:把学生对象作为元素赋值给学生数组
*                 E:遍历学生数组
*/
public class StudentDemo {
        public static void main(String[] args) {
                //创建学生数组
                Student[] students = new Student[3];
               
                //创建学生对象
                Student s1 = new Student("曹操",40);
                Student s2 = new Student("刘备",35);
                Student s3 = new Student("孙权",30);
               
                //把学生对象作为元素赋值给学生数组
                students[0] = s1;
                students[1] = s2;
                students[2] = s3;
               
                //遍历学生数组
                for(int x=0; x<students.length; x++) {
                        Student s = students[x];
                        //System.out.println(s);
                        System.out.println(s.getName()+"---"+s.getAge());
                }
        }
}
ArrayList集合:
package com.itheima_01;

import java.util.ArrayList;

* 集合类的特点:
*                 长度可变。
*
* ArrayList<E>:
*                 大小可变数组的实现
*
*                 <E>:是一种特殊的数据类型,泛型。
*                 怎么用呢?
*                         在出现E的地方我们使用引用数据类型替换即可
*                         举例:ArrayList<String>,ArrayList<Student>
*
* 构造方法:
*                 ArrayList()
*
* 添加元素:
*                 public boolean add(E e):添加元素
*                 public void add(int index,E element):在指定的索引处添加一个元素
*/
public class ArrayListDemo {
        public static void main(String[] args) {
                //创建集合对象
                ArrayList<String> array = new  ArrayList<String>();
               
                //add(E e):添加元素
                array.add("hello");
                array.add("world");
                array.add("java");
               
                //add(int index,E element):在指定的索引处添加一个元素
                //array.add(1, "android");
               
               
                System.out.println("array:"+array);
        }

}
ArrayList的删改:
package com.itheima_01;

import java.util.ArrayList;

/*
* 获取元素
*                 public E get(int index):返回指定索引处的元素
* 集合长度
*                 public int size():返回集合中的元素的个数
* 删除元素
*                 public boolean remove(Object o):删除指定的元素,返回删除是否成功
*                 public E remove(int index):删除指定索引处的元素,返回被删除的元素
* 修改元素
*                 public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
*/
public class ArrayListDemo2 {
        public static void main(String[] args) {
                //创建集合对象
                ArrayList<String> array = new ArrayList<String>();
               
                //添加元素
                array.add("hello");
                array.add("world");
                array.add("java");
               
                //public E get(int index):返回指定索引处的元素
                //System.out.println("get:"+array.get(0));
                //System.out.println("get:"+array.get(1));
                //System.out.println("get:"+array.get(2));
               
                //public int size():返回集合中的元素的个数
                //System.out.println("size:"+array.size());
               
                //public boolean remove(Object o):删除指定的元素,返回删除是否成功
                //System.out.println("remove:"+array.remove("world"));//true
                //System.out.println("remove:"+array.remove("world"));//false
               
                //public E remove(int index):删除指定索引处的元素,返回被删除的元素
                //System.out.println("remove:"+array.remove(0));
               
                //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
                System.out.println("set:"+array.set(1, "android"));
               
                //输出
                System.out.println("array:"+array);
        }

}
学生管理系统!
IO流:
IO流用来处理设备之间的数据传输
     Java对数据的操作是通过流的方式
     Java用于操作流的类都在IO包中

    流按流向分为两种:输入流,输出流
FileWriter
      a:使用FileWriter流关联文件
      b:利用FileWriter的写方法写数据
      c:利用FileWriter的刷新方法将数据从内存刷到硬盘上

      d:利用FileWriter的关流方法将释放占用的系统底层资源
缓冲流BufferedWreiter  BufferedReader
      BufferedWriter
       void newLine():写一个换行符,这个换行符由系统决定,不同的操作系统newLine()方法使用的换行符不同
windows:\r\n
linux:\n
mac:\r
       BufferedReader

       String readLine():一次读取一行数据,但是不读取换行符

示例
package com.itheima_06;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

/*
* 从文本文件中读取数据到ArrayList集合中,并遍历集合
* 每一行数据作为一个字符串元素
*
* 分析:
*                 A:创建输入缓冲流对象
*                 B:创建集合对象
*                 C:读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中
*                 D:释放资源
*                 E:遍历集合
*/
public class FileToArrayListTest {
        public static void main(String[] args) throws IOException {
                //创建输入缓冲流对象
                BufferedReader br = new  BufferedReader(new FileReader("array.txt"));
               
                //创建集合对象
                ArrayList<String> array = new ArrayList<String>();
               
                //读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中
                String line;
                while((line=br.readLine())!=null) {
                        array.add(line);
                }
               
                //释放资源
                br.close();
               
                //遍历集合
                for(int x=0; x<array.size(); x++) {
                        String s = array.get(x);
                        System.out.println(s);
                }
        }
}











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