目录
一、面向对象编程
先来创建一个实例来感受一下!
public class Student {
public String name;
public double chinese;
public double math;
public void printSum(){
System.out.println(name+"的总成绩是:"+(chinese+math));
}
public void printavg(){
System.out.println(name+"的平均成绩"+(chinese+math)/2.0);
}
}
public class text {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "wwl";
s1.chinese = 100.0;
s1.math = 100.0;
s1.printSum();
s1.printavg();
}
}
1.类和对象的一些注意事项
目标:掌握类与对象的一些注意事项。
1、类名建议用英文单词,首字母大写,满足驼峰模式,且要有意义,比如:Student、Car 2、类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)。
3、成员变量本身存在默认值,同学们在定义成员变量时一般来说不需要赋初始值(没有意义)。
4、一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须成为代码文件名。
5、对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会相互影响了. 6、如果某个对象没有一个变量引用它,则该对象无法被操作了,该对象会成为所谓的垃圾对象。
2.this关键字
this是一个变量。可以用在方法中,拿到当前对象
this有啥应用场景呢? this主要用来解决:变量名称冲突问题的。
public class Student { public String name; public double chinese; public double math; public void printthis(double chinese){ if(this.chinese > chinese){ System.out.println("优秀"); } } }public class text { public static void main(String[] args) { Student s2 = new Student(); s2.chinese = 96; s2.printthis(90); } }
3.构造器
构造器是什么样子?
public class Student{ public Student(){ System.out.println("无参构造器触发"); } public Student(String name,int age){ System.out.println("有参构造器触发"); } } public class Test{ public static void main(String[] args) { Student s2 = new Student(); Student s3 = new Student("wwl",19); } }
构造器有什么特点? 创建对象时,对象会去调用构造器。· 创建对象时,同时完成对对象成员变量(属性) 的初始化赋值。 构造器的注意事项
1.类在设计时,如果不写构造器,Java是会为类自动生成一个无参构造器的。
2.一旦定义了有参数构造器,Java就不会帮我们的类自动生成无参构造器了,此时就建议自己手写一个无参数构造器出来了。
4.封装
什么是封装?
就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。
封装设计规范:合理隐藏,合理暴露
public 公开 类外可以访问
private 私有 类外不可以访问
5.实体类JavaBean
什么是实体类?
●就是一种特殊形式的类。
01.这个类中的成员变量都要私有,并且要对 外提供相应的getXxx,setXxx方法
02.类中必须要有一个公共的 无参的构造器。
package src.javase.day06.javabean; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package src.javase.day06.javabean; import src.javase.day06.javabean.Student; public class Test { public static void main(String[] args) { Student s1 = new Student(); s1.setName("wwl"); System.out.println("s1.name = " + s1.getName()); Studentoperator s2 = new Studentoperator(s1); s2.printpass(); } }
2.实体类有啥应用场景?
实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离
package src.javase.day06.javabean; public class Studentoperator { private Student student; public Studentoperator(Student student) { this.student = student; } public void printpass() { if (student.getAge() >= 60) { System.out.println("通过"); } else { System.out.println("不通过"); } } }
6.全局变量和局部变量
目标:搞清楚成员变量和局部变量的区别,
1、类中位置不同:成员变量(类中,方法外)、局部变量(常见于方法中)
2、初始化值不同:成员变量(有默认值,不需要初始化赋值),局部变量(没有默认值,使用之前必须完成赋值)
3、内存位置不同:成员变量(存在于堆内存),局部变量(栈内存)
4、作用域不同:成员变量(整个对象),局部变量(在所归属的大括号中)
5、生命周期不同:成员变量(与对象同生共死),局部变量(方法调用而生,方法结束而亡)
7.常用的API
什么是包?
包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
建包的语法格式:package **.**.**; public class Student
在自己程序中调用其他包下的程序的注意事项
- 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
- 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式:import包名类名;
- 如果当前程序中,要调用ava提供的程序,也需要先导包才可以使用;但是ava.lang包下的程序是不需要我们导包的,可以直接使用。
- 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
1.String包
1.String包的创建
public class StringDemo01 { public static void main(String[] args) { //采用直接双引号得到字符串对象 String name = "wwl"; System.out.println(name); //采用创建一个对象得到字符串 String rs1 = new String("wwl1"); System.out.println(rs1); //创建一个字符数组 char[] chars = {'你','好','呀'}; String rs2 = new String(chars); System.out.println(rs2); //创建一个字节的数组,来创建字符串对象 byte[] bytes = {99,98,97}; String rs3 = new String(bytes); System.out.println(rs3); } } /* wwl wwl1 你好呀 cba */
2.String 提供的方法
public class StringDemo2 { public static void main(String[] args) { String str1 = "java是最好的语言之一"; //length()统计字符串长度 System.out.println(str1.length()); //获取字符串某个索引位置的字符charAt(5) System.out.println(str1.charAt(5)); //将当前字符串转换成字符数组toCharArray() char[] chars = str1.toCharArray(); for (int i = 0; i < chars.length; i++) { System.out.println(chars[i]); } //判断字符串是否一样,一样就返回true String str2 = "java是世界上最好的语言之一"; System.out.println(str1.equals(str2)); //判断两个字符串内容是否一样,忽略大小写 System.out.println(str1.equalsIgnoreCase(str2)); //截取字符串内容 String str3 = str1.substring(1,3); System.out.println(str3); String str4 = str1.substring(1); System.out.println(str4); //使用新值,将字符串中的旧值替换 String str5 = str1.replace("java","***"); System.out.println(str5); //判断是否有这个字符串 boolean java = str1.contains("java"); System.out.println(java); //是否以某一字符串开头 boolean java1 = str1.startsWith("java"); System.out.println(java1); //以什么为间隔符,拆分 String str6 = "zn,wwl,ljh,wwc"; String[] split = str6.split(","); for (int i = 0; i < split.length; i++) { System.out.println(split[i]); } } } /* 12 最 j a v a 是 最 好 的 语 言 之 一 false false av ava是最好的语言之一 ***是最好的语言之一 true true zn wwl ljh wwc */
3.String注意事项
1、String有哪几点注意事项?
- String是不可变字符串对象
- 只要是以“..”(双引号)方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
- 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
1、字符串的比较使用=比较好吗?为什么?什么时候使用==?
不好,对于字符串对象的比较,=比较的是地址,容易出业务bug
基本数据类型的变量或者值应该使用=比较。
2、开发中比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。
public boolean equals (object anobject) public boolean equalsIgnorecase (String anotherstring)
2.ArrayList集合
import java.util.ArrayList; public class ArrayLIstDemo01 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); //相机何种加入元素 list.add("wwl"); list.add("zn"); list.add("good"); System.out.println(list); //向指定位置加入元素 list.add(1,"first"); System.out.println(list); //返回指定位置处的元素list.get(1) System.out.println(list.get(1)); //返回集合中元素的个数 System.out.println(list.size()); //删除指定索引处的元素,并返回被删除元素 System.out.println(list.remove(1)); //删除指定元素,返回是否成功 System.out.println(list.remove("wwl")); System.out.println(list); //修改索引处的值,并返回原来的旧值 System.out.println(list.set(2,"very")); System.out.println(list); } } /* [wwl, zn, good] [wwl, first, zn, good] first 4 first true [zn, good] */