Java基础知识--第四篇

    xiaoxiao2021-03-25  62

    一、Java的三大特性:封装、继承、多态  二、 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。     优点 A:提高了代码的复用性、提高安全性。 将不需要对外提供的内容都隐藏起来。    做法: 把属性隐藏,提供公共方法对其访问。          为了让使用者使用方法来给成员变量赋值,就不能允许它们直接去访问成员变量。 为了解决这种情况,java就提供了一个修饰符关键字:private private: 私有的意思。 可以修饰成员变量和成员方法。 特点:被private修饰的内容,只能在本类中访问。 构造setXXX()和getXXX()来访问成员变量。 2.this关键字     局部变量如果有一个变量和成员变量名称一致,那么优先使用的是局部变量。(就近原则) 这样的话,就造成了局部变量隐藏了成员变量。 为了解决这种情况,java就提供了一个代表本类对象的关键字:this 三:构造方法 a.构造方法: 作用:给对象的数据进行初始化 格式特点: A:方法名和类名相同。 public void Student() {} B:没有返回值类型。 修饰符 返回值类型 方法名(...) {...} C:没有返回值。 没有用return带明确的值回来。 return; b.构造方法注意事项 不提供构造方法,系统会给出默认无参构造方法 提供了构造方法,系统将不再提供默认无参构造方法 建议:建议自己给出无参构造(构造方法可以是重载的) 给成员变量赋值: A:通过setXxx()方法 B:通过带参构造方法 成员方法: 去掉static的方法。 根据返回值类型: void类型 非void类型 根据参数列表: 无参 带参 四、标准代码的写法: 练习: 学生类: 成员变量: id,name,age,sex 构造方法:无参,带参 成员方法:getXxx()/setXxx()  show(),study() public class student { private int id; private String name; private int age; private String sex; public student() { super(); // TODO Auto-generated constructor stub } public student(int id, String name, int age, String sex) { super(); this.id = id; this.name = name; this.age = age; this.sex = sex; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } Eclipse中,可自动给定义的属性生成setXXX()和getXXX()代码   方法:右键--选择source--Generate getters and setter--想要给那个属性生成setXXX和getXXX()方法,就选择哪个属性即可   无参有参构造的生成:右键--source--Generate Constructor using Fields(有参构造)                                   --Generate Constructor from Superclass(无参构造) 五、static关键字 为了体现共用的数据,java就提供了一个关键字:static。 static: 作用:可以修饰成员变量和成员方法 特点: A:随着类的加载而加载 B:优先于对象存在 C:被类的所有对象共享 也是我们判断该不该使用静态修饰一个数据的依据。 D:可以通过类名调用 静态变量:类变量 非静态变量:实例变量,对象变量 非静态的:创建对象访问 静态的:可以通过类名,也可以通过对象访问。 static关键字注意事项 A:在静态方法中是没有this关键字的 原因:静态的内容随着类的加载而加载,this是随着对象的创建而存在,所以,static中不能有this。 B:静态方法只能访问静态的成员变量和静态的成员方法 静态方法只能访问静态的成员。 六、  String类讲解 (1) 是由多个字符组成的一串数据。(字符序列) 其实字符串可以看成是一个字符数组。 (2)构造方法:   public String():无参构造方法   public String(byte[] bytes):把字节数组转换为字符串   public String(char[] value):把字符数组转换为字符串   public String(char[] value,int offset,int count):把字符数组的一部分转换为字符串   public String(String original):把一个字符串转换为字符串       成员方法:   public int length():返回此字符串的长度 (3)String的特点及面试题 A:String s = new String("hello")和String s = "hello"的区别 前者创建了1个或者2个对象 后缀创建了0个或者1个对象 B:面试题(看程序写结果) A:new和直接赋值的区别 String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1==s2);//创建了两个对象--false System.out.println(s1.equals(s2));true String s3 = new String("hello"); String s4 = "hello"; System.out.println(s3==s4);false System.out.println(s3.equals(s4));true String s5 = "hello"; String s6 = "hello"; System.out.println(s5==s6);true System.out.println(s5.equals(s6));true (4)String类的成员方法 A:判断功能  boolean equals(Object obj):比较两个字符串的内容是否相同,严格区分大小写。(用户名,密码)  boolean equalsIgnoreCase(String str):比较两个字符串的内容是否相同,忽略大小写。(验证码)  boolean contains(String str):判断字符串中是否包含一个子串。  boolean startsWith(String str):判断是否以指定的字符串开头  boolean endsWith(String str):判断是否以指定的字符串结尾  boolean isEmpty():判断字符串的内容是否为空 B:获取功能  String类的获取功能:  int length():返回字符串的长度。其实就是字符的个数。  char charAt(int index):返回字符串中指定索引处的字符。  int indexOf(int ch):返回指定的字符在字符串中第一次出现的索引。 明明说的是字符,为什么是int呢? 原因是int类型还可以接收char类型。 97,'a'是一样的效果。 但是如果参数是char类型,你就不能写97了。  int indexOf(String str):返回指定的字符串在字符串中第一次出现的索引。  int indexOf(int ch,int fromIndex):从指定的索引处开始,返回指定的字符在字符串中第一次出现的索引。  int indexOf(String str,int fromIndex):从指定的索引处开始,返回指定的字符串在字符串中第一次出现的索引。  String substring(int start):截取从start开始到末尾的字符串。  String substring(int start,int end):截取从start开始到end结束的字符串。 C:转换功能  byte[] getBytes():把字符串转换为字节数组  char[] toCharArray():把字符串转换为字符数组  static String valueOf(char[] chs):把字符数组转换为字符串  static String valueOf(int i):把int类型的数据转换为字符串 valueOf():可以把任意类型的数据转换为字符串。  String toLowerCase():把字符串转成小写  String toUpperCase():把字符串转成大写  String concat(String str):拼接字符串,前面我们使用过+进行字符串的拼接,不够专业。 D:其他功能  A:替换功能 String replace(char old,char new) String replace(String old,String new)  B:去除字符串两端空格 String trim() 七、StringBuiffer和StringBuilder    StringBuffer:    线程安全的可变字符序列。  *   * String和StringBuffer的区别?  * A:String的内容不可变  * B:StringBuffer的内容可变  *   * StringBuffer和StringBuilder的区别?  * A:StringBuffer 线程安全,效率低  * B:StringBuilder 线程不安全,效率高  *   * 线程安全:(同步),效率低  * 线程不安全:(不同步),效率高  *   * 构造方法:  * StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。  * StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。  * StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。  *   * 成员方法:  * public int length():返回长度(字符数)。实际值  * public int capacity():返回当前容量。 理论值   * 添加功能:添加元素,并返回本身的对象。  * A:public StringBuffer append(String str):追加数据,在末尾添加  * B:public StringBuffer insert(int offset,String str):插入数据,在指定位置添加  * 删除功能:  * public StringBuffer deleteCharAt(int index):删除指定索引处的字符  * public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右  * 替换功能:  * public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据  *   * 反转功能:  * public StringBuffer reverse()  * 截取功能:返回值类型是String类型,本身没有发生改变  * public String substring(int start)  * public String substring(int start,int end)   * 相互转换:  *   * String -- StringBuffer  * String s = "hello"; // 方式1 StringBuffer sb1 = new StringBuffer(s); // 方式2 StringBuffer sb2 = new StringBuffer(); sb2.append(s);  *   * StringBuffer  --  String  * StringBuffer sb = new StringBuffer("world"); //方式1 String s1 = sb.substring(0); //方式2 String s2 = sb.toString(); //方式3 String s3 = new String(sb);    
    转载请注明原文地址: https://ju.6miu.com/read-33530.html

    最新回复(0)