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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 阿里云 于 2017-12-8 14:31 编辑



day07
  • 面向过程思想:之前所用的编程方式是面对过程
    • 强调的是每一个功能的步骤
    • c语言是面向过程的语言
  • 面对对象思想:对同一类进行封装调用,简称OOP
    • 强调的是对象,然后由对象去调用功能
    • 特点
      • 符合思考习惯
      • 将复杂的事情简单化
      • 将我们从执行者变成指挥者

  • 学习编程语言就是为了把现实世界的事物模拟出来,实现信息化.
  • 如何表示现实世界的事物的呢?
    • 属性=>【成员变量:类中,方法外;不需要给初始值,int初始值为0,string初始为null...】
    • 行为=>【成员方法:之前所学去掉static关键字】
  • Java语言最基本的单位是类,通过类来体现现实世界事务的,类是一组相关属性和行为的集合,对象是该事物的具体体现
    • 举例:学生是一个类,班长是一个对象
  • 如何使用类
    • 创建对象
      • 类名 对象名=new 类名();
    • 访问成员变量
      • 对象名.变量名
    • 访问成员方法
      • 对象名.方法名(...)

  • 如何描述类
    • ...类
    • 成员变量:...
    • 成员方法:...
  • 方法共用:
    • 例如:Phone p=new Phone();Phone p2=new Phone();//p2改变,p不改变
  • 两个引用指向同一个对象:
    • 例如:Phone p2=p;//此代码没有意义,p2改变,p也改变
  • 成员变量和局部变量的区别:
    • 在类中的位置不同
      • 成员变量:类中,方法外
      • 局部变量:方法中或者方法声明上(形式参数)
    • 在内存中的位置不同
      • 成员变量:堆内存
      • 局部变量:栈内存
    • 生命周期不同
      • 成员变量:随着对象存在和消失
      • 局部变量:随着方法存在和消失
    • 初始化值的问题
      • 成员变量:有默认值
      • 局部变量:没有默认值,需要先赋值后使

  • private关键字【私有的,最小权限,与public相反】
    • 是一个修饰符,可以修饰成员变量和成员方法
    • 被修饰的成员只能在本类中被访问
  • 针对private修饰的成员变量
    • 我们会相应的提供getXxx()和setXxx(),用于获取和设置成员变量的值,方法用public修饰
    • 这样我们可以在getXxx()或setXxx()增加一些安全设置等等
  • 封装
    • 三大特征之一(另外有继承、多态)
    • 外界无法直接操作和修改
  • 封装原则
    • 将不需要对外提供的内容都隐藏起来
    • 把属性隐藏,提供公共方法对其访问(getter/setter)
  • 封装好处
    • 提高代码的安全性
    • 提高代码的复用性
  • 当局部变量和成员变量相同时,在调用局部变量时选用的是局部变量!(就近原则)如果想调用成员变量必须使用this关键字,this必须在方法中使用
  • 构造方法:给对象的数据进行初始化
    • 格式
      • 权限修饰符 类名(参数列表){      方法体      }
      • 方法名和类名相同
      • 没有返回值类型,连void都不能写
      • 没有具体的返回值

  • 如何调用构造方法
    • 通过new关键字调用
    • 格式:类名 对象名=new 构造方法(...);
  • 构造方法的注意事项
    • 无参构造方法的调用:Student s=new Student();
    • 有参构造方法的调用:Student s=new Student("林青霞",28);
    • 如果没有在类中给出构造方法,系统将提供默认的无参构造方法
    • 如果提供了构造方法,系统将不在提供无参构造方法,我想使用就必须自己提供无参构造方法(推荐:自己编写无参构造方法)
    • 构造方法也是可以重载的
  • 成员变量赋值方法
    • setXxx()方法:例如s.setName("林青霞",28)
    • 代参构造方法:例如Student s=new Student("林青霞",28);
  • 定义一个类的实例:
    public class Student{
    //main方法不适合放具体的一个类里面,测试时可以使用
    //成员变量
    String age;//一般不这样定义,不安全
    private String name;//一般使用private配合set/get方法
    //无参构造
    public Student(){}
    //有参构造
    public Student(String name){
      this.name=name;
    }
    //get/set方法
    public String getName(){
      return this.name;
    }
    public void setName(String name){
      this.name=name;
    }
    //其他成员方法
    public boolean eat(){
      System.out.println("吃饭");  return false;
    }
    }
  • 创建对象:
    • Student s=new Student();//无参构造,
    • Student s=new Student("林青霞");//有参构造,初始化变量
  • 调用变量:
    • s.age 调用无private的成员变量,一般不这样
    • s.getName() 调用有private的成员变量
  • 调用方法:
    • s.eat() 调用无private的成员变量
  • javaBean
    • 用于描述和封装数据,便于数据的传递
  • Random/Scanner:用于实现某种特定功能.
day08
  • API概述
    • 学习查询API文档(帮助文档)
    • 点击显示=>索引=>输入框中录入内容 例如random
    • 看包:java.lang包下不用导包,其他都需要导包(一般自动导入了)
    • 看类的功能描述:生成随机数
      • Object:是类的层次结构中的根类,所有类都直接间接继承自该类,如果一个方法的形式参数是它,那么我门可以传递它的任意的子类对象
    • 看构造方法:
    • 看成员方法:
      • 成员方法功能
      • 调用方法
        • 看返回值
        • 看方法名
        • 看形式参数

    • 如果需要,可以单击该方法查看详细信息
  • 字符串类构造方法

    • 本质是一个字符数组
    • 构造创建方法(创建字符串对象):这时【字符串的地址值在堆内存中】,然后堆内存指向方法区常量池的方法区
      • String(String)//例如String s=new String("abcd") 使用一个字符串创建一个String对象
      • String(char[] value) 例如String s=new String({'a','b','c','d'}); //通过char数组创建一个String对象
      • String(char[] value, int index, int count) :把字符中的一部分字符封装成字符串对象
        例如String s=new String({'a','b','c','d'},1,2)//注意:count表示长度
    • 直接创建方法:这时,【字符串的的内容存储在方法区的常量池中】,为方便重复使用,所以地址值在方法区

      • 字符串是一种比较特殊的的引用数据类型,直接输出的是该对象中的数据,而且创建对象可以这样:String s="abc";
    • ==:

      • 基本数据类型:比较的是内容是否相同
      • 引用数据类型:比较的是地址值是否相同
    • 比较之后结论:
      • 同一字符串直接创建与构造方法地址值不同
      • 两个直接创建的字符床地址值相同

  • 字符串类常用功能(成员方法)

    • 判断【都返回布尔值】
      • boolean equals(Object obj):【比较内容是否相同,string.equals("886") 应写成 "886".equals(string),使用常量调用方法,防止string为null,防止空指针异常,导致系统出错。】
      • boolean equalsIgnoreCase(Object obj):比较是否相同,但是不区分大小写【IgnoreCase忽略大小写】
      • boolean startswith(String prefix):【是否以指定字符串开头,常用于判断语句,例如姓氏的判断】
      • boolean endsWith(String suffix):【是否以指定字符串结尾】
      • boolean contains(CharSequence s):【是否包含指定的字符串】
    • 获取
      • int length():获取字符串的长度,【注意:这里是方法,需要小括号!可用于遍历字符串!】
      • char charAt(int index):获取指定索引处的字符【可用于遍历字符串!】【string.charAt(0) != '0';不要写成string.charAt(0) != 0;】
      • int indexOf(String str):获取str在字符串对象中第一次出现的索引【没有则返回-1】
      • String substring(int start):【从start索引开始截取字符串, 到字符串的末尾】
      • String substring(int start, int end):从start开始截取字符串,包括start,到end结束【不包括end!】
    • 转换【都以to开头】

      • char[] toCharArray():将字符串转换为字符数组【可用于遍历】
      • String toLowerCase():【将字符串转换为小写字符串】
      • String toUpperCase():【将字符串转换为大写字符串】
    • 其他常用功能!

      • 去空格
        • String trim();//去除字符串两端的半角空白字符(空格, 制表符, 换行等), 中间的空白字符无法去掉
      • 分割
        • String[] split(String regex);//以指定正则表达式将字符串分割为多个部分【返回数组】
      • 替换字符串
        • String replace(CharSequence target, CharSequence replacement);//使用指定的replacement字符串替换当前字符串中的所有target字符串【可用于删除,替换成空字符串""即可】
        • String replaceAll(String regex, String replacement):使用指定的replacement字符串替换当前字符串中的所有符合【regex正则表达式】的部分
        • String replaceFirst(String regex, String replacement):【将该对象中匹配regex正则的第一个出现的字符串替换为replacement, 并返回替换后的字符串】


  • StringBuilder: 用于高效拼接字符串的类!
    • String类进行字符串拼接又耗时又消耗内存资源,所以我们使用StringBuilder
    • 是一个可变的字符串,字符串缓冲区类
  • StringBuilder构造方法
    • StringBuilder():创建一个StringBuilder对象
    • StringBuilder(String str):使用一个String创建一个StringBuilder对象. 【用于将String转换为StringBuilder】
  • StringBuilder成员方法:
    • int capacity():返回当前StringBuilder的容量,表示存放最大值
    • int length():返回当前StringBuilder中保存的字符数
    • StringBuilder reverse():【反转当前StringBuilder中保存的字符串内容】不用接收返回值
    • StringBuilder append(任意类型):追加内容到当前字符串的尾部【添加数据并返回自身对象!】所以可以这样,链式编程:sb.append("hello").append(123).append(true);
    • String toString():【将StringBuilder对象转换为String,反向转换要通过上文的构造方法】



0 个回复

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