本周主要观看了黑马程序员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;
}
}