本章内容主要为面向对象的封装和访问修饰符以及构造方法,希望大家可以仔细阅读。本贴为持续更新贴!内容附带大量图文和练习,供大家学习时参考。 更多资料和内容尽在: 码牛云课堂Java霸牛老师(微信):mnykt8080; 码牛云Java技术交流QQ群:1142264605;
什么是API
API (Application Programming Interface) :应用程序编程接口
java中的API
提前定义好的一些java类。
使用
双击打开帮助文档 点击索引,输入框输入要查看的类 先看在哪个包下 在看构造方法 在看方法
String是不可变类,一旦创建一个String对象后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销
毁掉。
常用的构造方法
方法名说明public String()创建一个包含0个字符序列的String对象(并不是返回null)public String(char[] chs)根据字符数组的内容,来创建字符串对象public String(byte[] bys)根据字节数组的内容,来创建字符串对象String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc示例代码
package com.mnyketang; /* String是不可变类,一旦创建一个String对象后,包含在这个对象中的字符序列是不可改变的, 直至这个对象被销毁掉。 构造方法 public String() 创建一个包含0个字符序列的String对象(并不是返回null) public String(char[] chs) 根据字符数组的内容,来创建字符串对象 public String(byte[] bys) 根据字节数组的内容,来创建字符串对象 String s = "abc"; 直接赋值的方式创建字符串对象,内容就是abc */ public class Demo01 { public static void main(String[] args) { //public String() 创建一个包含0个字符序列的String对象(并不是返回null) String s1 = new String(); System.out.println(s1); // public String(char[] chs) 根据字符数组的内容,来创建字符串对象 char[] c = {'a','b','c'}; String s2 = new String(c); System.out.println(s2);//abc // public String(byte[] bys) 根据字节数组的内容,来创建字符串对象 byte[] d = {65,66,67}; String s3 = new String(d); System.out.println(s3);//ABC //String s = "abc"; 直接赋值的方式创建字符串对象,内容就是abc String s4 = "abc"; System.out.println(s4);//abc } }通过构造方法创建 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
直接赋值方式创建
只要字符序列相同(顺序和大小写),JVM 都只会建立一个 String 对象,并在字符串池中维护
package com.mnyketang; /* 创建字符串对象两种方式的区别 通过构造方法创建 通过new创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同 直接赋值方式创建 只要字符序列相同(顺序和大小写),JVM 都只会建立一个 String对象,并在字符串池中维护 */ public class Demo02 { public static void main(String[] args) { char[] a = {'a','b','c'}; //s1是引用类型变量 保存的是地址值 String s1 = new String(a); System.out.println(s1); byte[] b = {97,98,99}; String s2 = new String(b); System.out.println(s2); System.out.println(s1 == s2);//比较的是s1和s2地址值是否相同 false String s3 = "ABC"; String s4 = "ABC"; System.out.println(s3 == s4);//true } }需求
键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
代码
package com.mnyketang; import java.util.Scanner; /* 键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数。 思路: 1:键盘获取输入的字符串 2:定义三个变量保存每种类型字符出现次数 3:遍历字符串,得到每一个字符 4:用if格式3进行判断,属于那种类型对应变量进行加1 大写字母:ch>='A' && ch<='Z' 小写字母: ch>='a' && ch<='z' 数字: ch>='0' && ch<='9' 5:打印输出三个变量的值 */ public class Demo04 { public static void main(String[] args) { //1:键盘获取输入的字符串 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String str = sc.next(); //2:定义三个变量保存每种类型字符出现次数 int bigCount = 0; int smallCount = 0; int numCount = 0; //3:遍历字符串,得到每一个字符 for (int i = 0; i < str.length();i++){ char c = str.charAt(i); //4:用if格式3进行判断,属于那种类型对应变量进行加1 if( c >= 'A' && c <= 'Z' ){ bigCount++; }else if(c >= 'a' && c <= 'z'){ smallCount++; }else { numCount++; } } //5:打印输出三个变量的值 System.out.println("大写字符次数为" + bigCount); System.out.println("小写字符次数为" + smallCount); System.out.println("数字字符次数为" + numCount); } }需求
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,键盘录入 abc,输出结果 cba
代码
package com.mnyketang; import java.util.Scanner; /* 需求 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入 abc,输出结果 cba 思路: 1:通过Scanner获取键盘录入字符串 2:定义一个方法,返回值类型为String,参数为String 3:在方法中倒着遍历字符串,获取每一个字符在拼接为一个新的字符串返回 4:调用方法接受反转后的字符串 5:输出结果 */ public class Demo05 { public static void main(String[] args) { //1:通过Scanner获取键盘录入字符串 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串"); String str = sc.next(); //4:调用方法接受反转后的字符串 String reverseStr = reverse(str); //5:输出结果 System.out.println(reverseStr); } //2:定义一个方法,返回值类型为String,参数为String /* 方法参数:String 方法返回值:String */ public static String reverse(String s) { //3:在方法中倒着遍历字符串,获取每一个字符在拼接为一个新的字符串返回 String str = ""; for (int i = s.length() - 1; i > 0; i--) { //har c = s.charAt(i); str += s.charAt(i); } return str; } } StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中
的内容是可变的
String类:内容是不可变的
StringBuilder类:内容是可变的
常用的构造方法
方法名说明public StringBuilder()创建一个空白可变字符串对象,不含有任何内容public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象示例代码
package com.mnyketang; /* StringBuilder类概述 StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中 的内容是可变的 StringBuilder类和String类的区别 String类:内容是不可变的 StringBuilder类:内容是可变的 StringBuilder类的构造方法 public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容 public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象 */ public class Demo06 { public static void main(String[] args) { /*String s = "a";//"a" String c = s + "c";//"c" System.out.println(c);//"ac"*/ //public StringBuilder() StringBuilder sb = new StringBuilder(); System.out.println(sb); //public StringBuilder(String str) StringBuilder sb1 = new StringBuilder("java"); System.out.println(sb1);//java } }添加和反转方法
方法名说明public StringBuilder append(CharSequence s)添加数据,并返回对象本身public StringBuilder reverse()返回相反的字符序列示例代码
package com.mnyketang; /* public StringBuilder append(CharSequence s)添加数据,并返回对象本身 public StringBuilder reverse() 返回相反的字符序列 */ public class Demo07 { public static void main(String[] args) { StringBuilder sb = new StringBuilder("hello"); //不管调用多少次append方法只会产生一个对象 sb.append("world").append("java").append("python").append(100); System.out.println(sb);//helloworld sb.reverse(); System.out.println(sb); } }StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
示例代码
package com.mnyketang; /* StringBuilder转换为String public String toString():通过 toString() 就可以实现把 StringBuilder 转换为String String转换为StringBuilder public StringBuilder(String s):通过构造方法就可以实现把 String 转换为StringBuilder */ public class Demo08 { public static void main(String[] args) { // StringBuilder转换为String StringBuilder sb = new StringBuilder("hello"); //String s = sb; 不能直接赋值给String对象 //public String toString(): String s = sb.toString(); System.out.println(s); //String转换为StringBuilder String str = "world"; StringBuilder sb2 = new StringBuilder(str); System.out.println(sb2); } }需求
定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果
例如,键盘录入abc,输出结果 cba
代码
package com.mnyketang; import java.util.Scanner; /* 需求 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入abc,输出结果 cba 思路: 1:使用Scanner获取键盘录入字符串 2:定义一个方法,实现字符串反转。返回值类型 String,参数 String 3:在方法中用StringBuilder实现字符串的反转,并把结果转成String返回 4:调用方法接受返回字符串 5:输出结果 */ public class Demo09 { public static void main(String[] args) { //1:使用Scanner获取键盘录入字符串 Scanner sc = new Scanner(System.in); System.out.println("请输入字符串"); String str = sc.next(); //4:调用方法接受返回字符串 String reverseStr = reverse(str); //5:输出结果 System.out.println(reverseStr); } // 2:定义一个方法,实现字符串反转。返回值类型 String,参数 String public static String reverse(String s){ StringBuilder sb = new StringBuilder(s); return sb.reverse().toString(); } }什么是集合
提供一种存储空间可变的容器,存储的数据容量可以发生改变
ArrayList集合的特点 底层是数组实现的,集合大小是可以变化
泛型的使用
用于约束集合中存储元素的数据类型
package cn.itcast.day07.demo04; import java.util.ArrayList; /* 数组的长度不可以发生改变。 但是ArrayList集合的长度是可以随意变化的。 对于ArrayList来说,有一个尖括号<E>代表泛型。 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。 如果内容是空,得到的是空的中括号:[] */ public class Demo02ArrayList { public static void main(String[] args) { // 创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据 // 备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。 ArrayList<String> list = new ArrayList<>(); System.out.println(list); // [] // 向集合当中添加一些数据,需要用到add方法。 list.add("赵丽颖"); System.out.println(list); // [赵丽颖] list.add("迪丽热巴"); list.add("古力娜扎"); list.add("玛尔扎哈"); System.out.println(list); // [赵丽颖, 迪丽热巴, 古力娜扎, 玛尔扎哈] // list.add(100); // 错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就必须都是字符串才行 } }需求:
创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
代码
package com.mnyketang; import java.util.ArrayList; /* ArrayList存储字符串并遍历 需求 创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合 */ public class Demo11 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("java"); list.add("python"); list.add("go"); /* System.out.println(list.get(0)); System.out.println(list.get(1)); System.out.println(list.get(2));*/ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }需求
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
学生的姓名和年龄来自于键盘录入
代码
package com.mnyketang; import java.util.ArrayList; import java.util.Scanner; /* 需求 创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合 学生的姓名和年龄来自于键盘录入 思路: 1:定义标准学生类 2:创建ArrayList对象 3:通过Scanner获取键盘录入的学生信息 4:将输入的学生信息封装到一个学生对象中 5:将学生对象添加到集合中 6:遍历集合 */ public class Demo12 { public static void main(String[] args) { //2:创建ArrayList对象 ArrayList<Student> list = new ArrayList<>(); addStudent(list); addStudent(list); addStudent(list); // 6:遍历集合 for (int i = 0; i < list.size(); i++) { Student s = list.get(i);//获取对象的引用 System.out.println(s.getName() + " -- " + s.getAge()); } } public static void addStudent(ArrayList<Student> list) { // 3:通过Scanner获取键盘录入的学生信息 Scanner sc = new Scanner(System.in); System.out.println("请输入姓名"); String name = sc.next(); System.out.println("请输入年龄"); String age = sc.next(); // 4:将输入的学生信息封装到一个学生对象中 Student s = new Student();//s报存的是对象在内存中的地址 s.setName(name); s.setAge(age); // 5:将学生对象添加到集合中 list.add(s);//是对象的引用存放在集合中了 } } 码牛云课堂Java技术指导霸牛老师(微信):mnykt8080;
或者加入:
码牛云Java技术交流QQ群:1142264605;
获得后续资料,持续关注码牛云吧各位亲,下次更新我们不见不散!
