第三周Java学习:从70——83 章(黑马程序员Java入门教程)

 本周主要观看了黑马程序员Java入门教程70--84  集的内容,主要包括以下内容:

面向对象编程,常见API(String, ArrayList)和几个综合案例

一,面对对象编程

1. 面向对象的思想

面向对象:把现实世界中的事物全部看成一个一个的对象来解决问题的(万物皆对象)

面向对象的好处:代码符合人类的思维逻辑,编辑程序更简单,看程序更容易理解

2. 类,对象(在Java中必须先定义类,才能得到对象)

3. 定义类来创建对象

一般名词定义成成员变量:

修饰符:数据类型 变量名称  =  初始值;

private String name;

private double price;

成员变量不建议给初始值,存在默认值,默认值的规则:整数为0,浮点数为0.0,引用类型null,布尔型是false

4. 构造器(包括无参数构造器和有参数构造器)

构造器怎么调用:类名  对象名  =  new  构造器;

注意事项:任何类写出来自带一个无参数构造器,写不写都有;如果你在这个类中定义了一个有参数构造器,此时,如果你还要调用无参数构造器,你必须自己写一个

5. this关键字

可以用在有参数的构造器中去

可以用在方法中

6. 封装和标准JavaBean

面对对象的三大特征:封装,继承,多态

标准的JavaBean的书写要求:

成员变量建议private私有化,只能本类访问了

合理暴露——提供成套的getter和setter方法暴露取值和赋值

必须提供无参数构造器

7. 局部变量与成员变量的区别

二,常见的API(String和ArrayList)

1. 什么是API?

全称应用程序编程接口,就是Java自己写好的程序,给程序员调用的,方便完成一些功能的

2. String(不可变字符串):

String是字符串类型,它定义的变量可以指向一个字符串对象

String创建对象的方式;

方式一:直接使用双引号围起来: String name = "黑马";

方式二:new 构造器得到字符串对象:

两种方式的区别:双引号给出的字符串对象,存在与堆内存中的常量池中,相同内容只会储存一份,而new字符串对象,每new一次都会在堆内存中产生一个字符串对象

一些常用方法:

package string;

public class StringDemo2 {
    public static void main(String[] args) {
        // 目标:快速熟悉String提供的处理字符串的常用方法
        String s = "黑马Java";
        // 1.获取字符串的长度
        System.out.println(s.length());

        // 2.提取字符串中某一个索引位置处的字符
        char c = s.charAt(1);
        System.out.println(c);

        // 字符的遍历
        for (int i = 0; i < s.length(); i++) {
            // i = 0 1 2 3 4 5
            char ch = s.charAt(i);
            System.out.println(ch);
        }

        System.out.println("----------------------");

        // 3.把字符串转换成字符数组,在进行遍历
        char[] chars =  s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

        // 4.判断字符串内容,内容一样就返回true
        String s1 = new String("黑马");
        String s2 = new String("黑马");
        System.out.println(s1 == s2); // false
        System.out.println(s1.equals(s2));// true

        // 5.忽略大小写比较字符串内容
        String c1 = "34AaFG";
        String c2 = "34aAfg";
        System.out.println(c1.equals(c2));// false
        System.out.println(c1.equalsIgnoreCase(c2));// true

        // 6.截取字符串内容(包前不包后)
        String s3 = "java是最好的编程语言之一";
        String rs = s3.substring(0,8);
        System.out.println(rs);

        // 7.从当前索引位置一直截取到字符串的末尾
        String rs2 = s3.substring(5);
        System.out.println(rs2);

        // 8.把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
        String info = "这个电影简直是个垃圾,垃圾电影!!";
        String rs3 = info.replace("垃圾","**");
        System.out.println(rs3);

        // 9.判断字符串中是否包含某个关键字
        String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我";
        System.out.println(info2.contains("Java"));// true
        System.out.println(info2.contains("java"));// false
        System.out.println(info2.contains("java2"));// false

        // 10.判断字符串中是否以某个字符串开头
        String rs4 = "张三丰";
        System.out.println(rs4.startsWith("张"));// true
        System.out.println(rs4.startsWith("张三"));// true
        System.out.println(rs4.startsWith("张三2"));// false

        // 11.把字符串按照某个指定内容分裂成多个字符串,放到一个字符串数组中返回给我们
        String rs5 = "张无忌,周芷若,殷素素,赵敏";
        String[] names = rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

 3. ArrayList

ArrayList是一种集合(元素可以重复的,元素存在索引)

集合:代表一种容器,类似于数值;特点:大小可变,类型可以不固定,功能更加强大,适合做元素个数不能确定,同时存在增删操作的业务场景

如何构建一个ArrayList的对象代表一个集合容器,存储数据:

public ArrayList();

ArrayList list = new ArrayList();

常用方法;

 ArrayList遍历并删除元素;

1. 从前往后边遍历便删除存在问题:可能会存在删掉元素

2.删除元素后,马上后退一步i--就可以了

3.从后往前遍历,边遍历边删除没毛病

ArrayList存储自定义类型的对象:

1.ArrayList<Student> list  =  new ArrayList();

2. ArrayList<Movie> list  =  new ArrayList();

3.注意:集合容器中存储的是每个对象的什么东西?在堆内存中的地址!

 三,几个综合案例

1.设计一个登录页面

package string;

import java.util.Scanner;

public class StringTest4Practice {
    public static void main(String[] args) {
        // 完成用户的登录案例
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3;i++) {
            System.out.println("请您输入登录名称:");
            String loginName = scanner.next();
            System.out.println("请您输入登录密码 ;");
            String passWord = scanner.next();

            // 开始调用登录方法,判断是否登录成功
            boolean rs = login(loginName,passWord);
            if (rs){
                System.out.println("恭喜您,登录成功,欢迎进入系统");
                break;
            }else {
                System.out.println("您输入的登录名称或密码有误,请重试");
            }
        }
    }

    // 设计一个登录方法,对用户的登录名称和密码进行确认
    public static boolean login(String loginName, String passWord){
        // 设置一个正确的登录名称和密码用来比对
        String okLoginName = "liuzhengjie";
        String okPassWord = "2357111";

        // 开始正式判断用户是否登录成功
        // if (okLoginName.equals(loginName) && okPassWord.equals(passWord)){
        //    return true;
        // }else{
        //    return false;
        //}
        return okLoginName.equals(loginName) && okPassWord.equals(passWord);
    }
}

 2. 随机验证码

package string;

import java.util.Random;

// 完成随机产生验证码,验证码的每位可能是数字,大写字母,小写字母
public class StringTest5 {
    public static void main(String[] args) {
        System.out.println(createCode(4));
    }

    /**
     * 1.设计一个方法,返回指定位数的验证码
     */
    public static String createCode(int n){
        // 2.定义两个变量,一个是记住最终产生的随机数,一个记住可能用到的全部字符
        String code = "";
        String data = "abcdefghijklmnopqrstuvwxyz0123456789";

        Random r = new Random();
        // 3.开始定义一个循环产生每位随机字符
        for (int i = 0; i < n; i++) {
            // 4.随机一个字符范围内的索引
            int index = r.nextInt(data.length());
            // 5.根据索引去全部字符中提取该字符
            code += data.charAt(index); // code = code + 字符
        }
        return code;
    }
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值