没有合适的资源?快使用搜索试试~ 我知道了~
2.3、 本次预计讲解的知识点 1、 引用数据的操作深入; 2、 this关键字的使用; 3、 对象数组的概念; 4、 引用的实际问题分析; 很不错的,同步视频的原文档
资源推荐
资源详情
资源评论
1 课程名称:面向对象
2 知识点
2.1、 上次课程的主要知识
1、 数组的操作题目:数组排序、数组的两个操作方法、数组的转置;
面向对象的三大特征:封装、继承、多态;
类是对象的操作模板,是一个抽象的共性的概念,类是由属性和方法所组成,而对对象才可以使用,
而对象的产生需要进行内存空间的分配,而且对象的引用传递指的就是堆内存地址的操作权,即:一块堆
内存可以同时被多个栈内存所指向;
封闭性:private 只是实现封装的一个小部分,在类中,所有的属性都必须进行封装,封装之后的属
性如果要访问则需要编写相应的 setter、getter 方法;
构造方法:构造方法的主要目的是为类中的属性初始化;
。构造方法的定义格式:方法名称与类的名称相同,而且没有返回值类型的声明;
。构造方法是在新对象实例化的时候被默认调用的;
。如果一个类中没有明确定义一个构造方法,则会自动生成一个无参的,什么都不做构造方法,
即:一个类中至少保留有一个构造方法;
简单 Java 类的开发原则:有时候可以称为 POJO,也可以称为 VO(Value Object)。
。简单 Java 类的定义原则:只有属性及 setter、getter 方法所组成的类;
。根据要求定义出类的名称,并编写属性及对应的 setter、getter 方法,而且所有的属性必须使
用 private 封装;
。类中可以提供构造方法属性进行初始化,但是一定要保留一个无参构造;
。类中的所有内容都不允许直接输出,必须返回给被调用处输出;
String 类:是一个字符串的定义类;
。String 的特点:
|-有两种实例化方式
|- 直接字符串赋值:在堆内在之中只开辟一块空间,可以自动入池,以备下次继续使
用;
|- 通过构造方法完成:会产生两块堆内存空间,而且不会自动入池,intern()方法手
工入池;
|- 字符串比较:
|- “==”:比较的是两个字符串所在的堆内存地址的比较,属于数值比较;
|- “equals()”:是 String 类中提供的一个方法,进行内容的比较;
|- 一个字符串常量就是 String 的匿名对象,会占据堆内存的;
|- 字符串的内容一旦声明之后则不可改变,改变的只是内存地址的指向;
。String 的常用方法:
|- 字符数组和字符串转换:
|- 【构造】public String (char c[]);
|- 【构造】public String(char c[], int offset, int len);
|- 【普通】public char toCharArray();
|- 【普通】public char cahrAt();
|-字节数组和字符串转换
|- 【构造】public String(byte b[]);
|- 【构造】public String(byte b, int offset, int len);
|- 【普通】public byte[] getBytes();
|- 【构造】public byte[] getBytes(String charset);
|- 字符串拆分:
|- 【普通】public String[] split(String regex);
|- 【普通】public String[] split(String regex , int size);
|- 字符串比较:
|- 【普通】public boolean equals(String other);
|- 【普通】public boolean equalsIgnonreCase(String str);
|- 【普通】public int compareTo(String str); --> > 0、<0、=0;
|- 字符串检索:
|- 【普通】public boolean contains(String str);
|- 【普通】public int indexOf(String str);
|- 【普通】public int lastIndexOf(String str);
|- 【普通】public int lastIndexOf(String str, int offset);
|- 【普通】public boolean setartsWith(String str);
|- 【普通】public boolean endsWith(String str);
|- 字符串截取:
|- 【普通】public String substring(int begin);
|- 【普通】public String substring(int begin, int end);
|-字符串替换:
|-【普通】public String replaceAll(String old, String newStr);
|-【普通】public String replaceFirst(String old, String newStr);
|- 其他操作:
|-【普通】public String trim();
|-【普通】public String toLowerCase(String str);
|-【普通】public String toUpperCase(String str);
|-【普通】public boolean isEmpty();
|-【普通】public int length();
2.2、 习题讲解
1、 现在给出了如下一个字符串格式:“姓名:成绩|姓名:成绩|姓名:成绩”,例如:给定的字符串是
“Tom:90|Jerry:80Tony:80......”,要求可以对数据进行处理,将数据按照如下的形式显示:
。例如:显示格式姓名:Tom,成绩:90;
public class StringDemo{
public static void main(String[] args){
String str = "Tom:90|Jerry:80|Tony:80";
String s[] = str.split("\\|");
for (int x = 0; x < s.length; x++){
String result[] = s[x].split(":");
System.out.println("姓名:" + result[0] + ",成绩" + result[1]);
}
}
}
主要的目的是训练字符串的拆分操作,记住,折不开的问题肯会有,所以只要拆不开的内容就转义。
2、 给定一个 email 地址,要求验证其是否正确,提示:可以简单的验证一下重点验证@和.。
。最短的 email 长度也是 5:a@a.a;
。@和.不能做为开头和结尾;
。@和.顺序要有定义,假设只有一个.;
public class StringDemo{
public static void main(String[] args){
String str = "aa@a.com";
System.out.println(isEmail(str));
}
public static boolean isEmail(String email){
if (email == null || email.length() < 5){
return false; // 没有必要判断了
}
if(!(email.contains("@") && email.contains("."))){
return false;
}
if (email.startsWith("@") || email.startsWith(".")
||email.endsWith("@")||email.endsWith(".")){
return false;
}
if (email.indexOf("@") > email.indexOf(".")){
return false;
}
return true; // 如果都正确则返回 true
}
}
这两个题目主要是为了巩固 String 类的操作方法。
2.3、 本次预计讲解的知识点
1、 引用数据的操作深入;
2、 this 关键字的使用;
3、 对象数组的概念;
4、 引用的实际问题分析;
3 具体内容
3.1 引用数据类型的操作回顾(重点)
下面编写三道题目,通过题目来简单的对引用传递的操作做一个基本的回顾。
范例:为第二道程序做一个铺垫
public class StringDemo {
public static void main(String[] args) {
int num = 10;
fum(num);
System.out.println(num);
}
public static void fum(int temp) {
temp = 20;
}
}
因为基本数据类型传递的都是一个个数值,所以方法中传进去之后,是否改变并不影响原始数字。
范例:第一道引用范例
class MyResult{
private int num = 10;
public void setNum(int n){
num = n;
}
public int getNum(){
return num;
}
}
public class StringDemo{
public static void main(String[] args){
MyResult mr = new MyResult();
mr.setNum(100);
fun(mr);
System.out.println(mr.getNum());
}
public static void fun(MyResult temp){
temp.setNum(30);
}
}
下面通过内存的关系图分析,在分析之前再次回顾一下概念:
。堆内存:保存的是对象的属性信息;
。栈内存:保存的是一块堆内存的操作地址;
本程序是一个标准的引用传递操作,即:一块堆内存空间被两块栈内存所指向。
范例:第二道引用范例
public class StringDemo {
public static void main(String[] args) {
String str = "Hello";
fum(str);
System.out.println(str);
}
public static void fum(String temp) {
temp = "MLDN";
}
}
本题目的解决关键有一点:字符串的内容不可改变,改变的是内存地址的指向,所以对于 String 而言
最方便的理解是按照一个普通的数字传递那样理解。
剩余35页未读,继续阅读
资源评论
kakaka00
- 粉丝: 0
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功