黑马程序员-java教程 代码笔记
学习时间:
2022 /7/2 - 7/3 七月第一个周末
学习目标:
视频p115-p149;
1.字符串
2.集合基础;
3.学生管理系统;
学习内容:
目录
1.String
1.String
String概述编辑
String构造方法
String对象特点编辑new会开辟新内存,直接赋值 如果两个值一样内存位置也一样
字符串比较编辑
用户登录
遍历字符串
统计字符次数
拼接字符串
2.StringBuilder
StringBuilder概述 编辑
StringBuilder构造方法编辑
StringBuilder 和String相互转换
案例:
2.集合基础
集合概述
ArrayList的构造方法和添加方法
ArrayList的常用方法编辑
案例
学生管理系统
1.String
1.String
String概述
String构造方法
//string构造方法: //public String(),创建一个空白字符串对象,不含有任何内容; //public String(char[] chs),根据字符串数组的内容,来创建字符串对象。 //public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。 //String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc;//推荐直接赋值的方法得到字符串对象public class String_01 {public static void main(String[] args) {//public String(),创建一个空白字符串对象,不含有任何内容;String s1 = new String();System.out.println("s1"+s1);//public String(char[] chs),根据字符串数组的内容,来创建字符串对象。char[] chs={'a','b','c'};String s2=new String(chs);System.out.println("s2"+s2);//public Strinf(byte[] bys),根据字节数组内容,来创建字符串对象。byte[] bys={97,98,99};String s3 = new String(bys);System.out.println("s3"+s3);//String s=“abc”;直接赋值的方法创建字符串对象,内容就是abc;String s4="abc";System.out.println("s4"+s4);} }
String对象特点new会开辟新内存,直接赋值 如果两个值一样内存位置也一样
字符串比较
public class test {public static void main(String[] args){char[] arr = {'a','b','c'};String s1 = new String(arr);String s2 = new String(arr);String s3 = "abc";String s4 = "abc";System.out.println(s1==s2);System.out.println(s1==s3);System.out.println(s3==s4);System.out.println("````````````````````````");System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s3.equals(s4));} }
案例
用户登录
import java.util.Scanner; //需求:已知用户名和密码,请用程序实现模拟用户登录,总共给三次机会,登陆之后,给出相应提示。 public class Lojinn{public static void main(String[] args) {String username = "susu";String passport = "123";for(int i = 1;i <= 3;i++){Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String name=sc.nextLine();System.out.println("请输入密码:");String port= sc.nextLine();if((name.equals(username)) && (port.equals(passport))){System.out.println("登陆成功");break;}else{if(2-i==0){System.out.println("登陆失败,账号锁定。");}else{System.out.println("登陆失败,你还有"+(2-i)+"次机会");}}}}}
遍历字符串
import java.util.Scanner; //字符串的索引也是从0开始的、 public class zhifuchuan {public static void main(String[] args) {//键盘录入一个字符串,用Scanner实现;Scanner sc=new Scanner(System.in);System.out.printf("请输入一个字符串:");String line= sc.nextLine();for(int i=0;i<line.length();i++){System.out.println(line.charAt(i));}} }
统计字符次数
import java.util.Scanner; //需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符字符出现的次数 //判断遍历到的字符属于那种类型,然后对应类型变量的统计+1。 public class accuse {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.printf("请输入一个字符串");String line=sc.nextLine();int bigCount=0;int smallCount=0;int numberCount=0;for(int i=0;i<line.length();i++){char ch=line.charAt(i);if(ch>'A'&&ch<'Z'){bigCount++;}else if(ch>'a'&&ch<'z'){smallCount++;}else if (ch>'0'&&ch<'9'){numberCount++;}}System.out.println("大写字母:"+bigCount+"个");System.out.println("小写字母:"+smallCount+"个");System.out.println("数字:"+numberCount+"个");} }
拼接字符串
//要求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符出返回, //调用方法,并在控制台输出结果。例如,数组为int[]arr={1,2,3};执行后输出结果为[1, 2,3]'public class stick {public static void main(String[] args) {int[] arr={1,2,3};String s=arrayToString(arr);System.out.println("s:"+ s);}public static String arrayToString(int[] arr) {String s="";s+="[";for(int i=0;i<arr.length;i++){if(i==arr.length-1){s+=arr[i];}else{s+=arr[i];s+=", ";}}s+="]";return s;} }
- 字符串反转
import java.util.Scanner; //定义一个方法,实现字符串反转。 public class reverses {public static void main(String[] args) {Scanner sc= new Scanner(System.in);System.out.printf("请输入一个字符串:");String line=sc.nextLine();String s=reverse(line);System.out.println("s:"+ s);}public static String reverse(String s){String ss="";for(int i=s.length()-1;i>=0;i--){ss+=s.charAt(i);}return ss;} }
2.StringBuilder
StringBuilder概述
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器
这里的可变指的是StringBuilder对象中的内容是可变的String和StringBuilder的区别:
String:内容是不可变的StringBuilder:内容是可变的StringBuilder构造方法
StringBuilder 和String相互转换
1.StringBuilder转换为String
publicString toString(): 通过 toString()就可以实现把StringBuilder转换为String
2.String转换为StringBuilder
public StringBuilder(String s): 通过构造方法就可以实现把String转换为StringBuilder
案例:
1.字符串拼接升级版
public class stickUp {public static void main(String[] args) {int[] arr={1,2,3};String s=arrayToString(arr);System.out.println("s:"+s);}public static String arrayToString(int[] arr){StringBuilder sb=new StringBuilder();sb.append("[");for(int i=0;i<arr.length;i++){if(i== arr.length-1){sb.append(arr[i]);}else{sb.append(arr[i]).append(", ");}}sb.append("]");String s= sb.toString();return s;}
}
2.字符串反转升级版
public class reverseUp {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String line = sc.nextLine();String s=myReserve(line);System.out.println("s:"+s);}public static String myReserve(String s) {/* StringBuilder sb=new StringBuilder(s);sb.reverse();String ss=sb.toString();return ss;*/return new StringBuilder(s).reverse().toString();}
}
2.集合基础
集合概述
集合类的特点:提供一种存储空问可变的存储模型,存储的数据容量可以发生改变集合类有很多,目前我们先学习一个: ArrayList
ArrayList的构造方法和添加方法
/* ArrayList的构造方法: public ArrayList():创建一个空的集合对象。 ArrayList的添加方法: public boolean add(E e):将指定元素追加到此集合的末尾。 public void add(index, E elemen):在此集合的指定位置插入指定元素。*/ public class FundnAdd {public static void main(String[] args) {ArrayList<String> array=new ArrayList<String>();// System.out.println(array.add("hello"));array.add("hello");array.add("world");array.add("java");array.add(1,"wuhu");System.out.println("array:"+array);} }
第二种在指定位置添加方法时,如果是中间部分,那数组中的元素依次后移;如果在末尾位置,那么直接补到结尾,如果超过结尾,比如本来0-2,插入到4位置,越界,会报错。
ArrayList的常用方法
remove&set&get:如果删除越界处的元素,会报错。
案例
- 1.储存字符串
//需求:创建一个储存字符串的集合,存储3个字符串元素,实用程序在控制台遍历该集合。 public class chuncu {public static void main(String[] args) {//创建集合对象ArrayList<String> array =new ArrayList<String>();//在集合中添加字符串对象array.add("liu");array.add("zuo");array.add("feng");//遍历集合。通过get(int index)实现。 /* System.out.println(array.get(0));System.out.println(array.get(1));System.out.println(array.get(2));*///遍历集合,其次要获得到集合的长度,用size()方法实现。for(int i=0;i<array.size();i++){String s=array.get(i);System.out.println(s);} } }
- 2.储存学生对象
public class Student {private String name;private int age;public Student() {}public Student(String name,int age){this.name=name;this.age=age;}public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}public String getName(){return name;}public int getAge(){return age;} }
//需求:创建一个存储学生对象的集合,存储三个学生对象,使用程序实现在控制台遍历改集合。 public class cunStudents {public static void main(String[] args) {//创建集合对象ArrayList<Student> array=new ArrayList<Student>();//创建学生对象Student s1=new Student("小明",15);Student s2=new Student("小娜",16);Student s3=new Student("小英",14);//添加学生对象到集合中array.add(s1);array.add(s2);array.add(s3);for(int i=0;i<array.size();i++){Student s= array.get(i);System.out.println(s.getName()+","+s.getAge());}} }
学生管理系统
- 3.储存学生对象并遍历升级版
public class Student {private String sid;private String name;private String age;private String address;public Student() {}public Student(String sid, String name, String age, String address) {this.sid = sid;this.name = name;this.age = age;this.address = address;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;} }
上面是学生类;下面是主界面。 利用Alt + Ins 可以快速设置set和get方法。
import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Scanner;public class StudentManager {public static void main(String[] args) {ArrayList<Student> array=new ArrayList<Student>();while (true) {System.out.println("------欢迎来到学生管理系统------");System.out.println("1 添加学生");System.out.println("2 删除学生");System.out.println("3 修改学生");System.out.println("4 查看所有学生");System.out.println("5 退出");System.out.println("请输入你的选择:");Scanner sc = new Scanner(System.in);String line = sc.nextLine();//用switch语句完成操作的选择switch (line) {case "1":addStudent(array);break;case "2":updateStudent(array);break;case "3":deleteStudent(array);break;case "4":findStudent(array);break;case "5":System.out.println("谢谢使用");break;}}}public static void addStudent(ArrayList<Student> array) {Scanner sc=new Scanner(System.in);String sid;while(true) {System.out.println("请输入学生学号:");sid = sc.nextLine();boolean flag = isUsing(array, sid);if (flag) {System.out.println("该学号已被使用,请重新输入");}else{break;}}System.out.println("请输入学生姓名:");String name=sc.nextLine();System.out.println("请输入学生年龄:");String age=sc.nextLine();System.out.println("请输入学生地址:");String address=sc.nextLine();Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);array.add(s);System.out.println("添加学生成功");}public static void findStudent(ArrayList<Student> array) {if(array.size()==0){System.out.println("无信息,请录入学生信息");return;}System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");for(int i=0;i<array.size();i++){Student s=array.get(i);}}public static void deleteStudent(ArrayList<Student> array) {Scanner sc=new Scanner(System.in);System.out.println("请输入你要删除的学生的学号:");String sid=sc.nextLine();int index=-1;for(int i=0;i<array.size();i++){Student s=array.get(i);if(s.getSid().equals(sid)){index=i;break;}}if(index==-1){System.out.println("该信息不存在,请重新输入");}else{array.remove(index);System.out.println("删除学生成功");}}public static void updateStudent(ArrayList<Student> array) {Scanner sc= new Scanner(System.in);System.out.println("请输入你要修改的学生的学号:");String sid=sc.nextLine();//键盘录入要修改的学生信息System.out.println("请输入学生新姓名:");String name=sc.nextLine();System.out.println("请输入学生新年龄:");String age=sc.nextLine();System.out.println("请输入学生新居住地:");String address=sc.nextLine();//创建学生对象Student s=new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//遍历集合修改对应的学生信息for(int i=0;i<array.size();i++){Student student=array.get(i);if(student.getSid().equals(sid)){array.set(i,s);break;}}System.out.println("修改学生信息成功!");}public static boolean isUsing(ArrayList<Student> array,String sid) {boolean flag=false;for(int i=0;i<array.size();i++){Student s= array.get(i);if(s.getSid().equals(sid)){flag=true;break;}}return flag;}}
黑马程序员-java教程 代码笔记相关推荐
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
- 黑马程序员Java教程学习笔记(三)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...
- 黑马程序员-Java教程-10缓冲流、转换流、序列化流
day10[缓冲流.转换流.序列化流.打印流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本 ...
- 黑马程序员JAVA 教程--基础语法
基础语法 注释 注释概述 注释分类 关键字 关键字概述 关键字特点 常量 常量概述 常量分类 数据类型 计算机存储单元 数据类型 数据类型内存占用和取值范围 变量 变量概述 变量定义 变量的使用 变量 ...
- 黑马程序员 JAVA基础学习笔记
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- ------小弟在因特网的小窝,祝愿所有的朋友身体健康------- 面向对象: 就是更加透明, ...
- 2023年黑马程序员Java学习路线图
2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...
- C++学习笔记(B站黑马程序员C++教程)
C++学习笔记(B站黑马程序员C++教程) 简介 视频链接https://www.bilibili.com/video/BV1kV411U7Ub?spm_id_from=333.999.0.0 建议用 ...
- 【黑马程序员 C++教程从0到1入门编程】【笔记4】C++核心编程(类和对象——封装、权限、对象的初始化和清理、构造函数、析构函数、深拷贝、浅拷贝、初始化列表、友元friend、运算符重载)
黑马程序员C++教程 文章目录 4 类和对象(类属性[成员属性],类函数[成员函数]) 4.1 封装 4.1.1 封装的意义(三种权限:public公共.protected保护.private私有)( ...
- [学习笔记]黑马程序员python教程
文章目录 思维导图 Python基础知识图谱 面向对象 SQL入门和实战 Python高阶技巧 第一阶段 第九章:Python异常.模块与包 1.9.1异常的捕获 1.9.1.1 为什么要捕获异常 1 ...
- 黑马程序员Python教程的代码--摆放游戏
把黑马程序员Python教程的代码跟着老师打了一遍,供大家参考学习. 可直接粘贴以下代码学习,对应课程380-384节 class HouseItem:def __init__(self,name,a ...
最新文章
- C语言入门练习 - 第一期 变量、输入输出、表达式与顺序语句(题解)
- 国际域名也将列入监管范畴(本文转载自【易名中国】)
- 【struts2+hibernate+spring项目实战】用户登录校验(struts拦截器)
- wxWidgets:wxFontPickerCtrl类用法
- Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
- python中global 和 nonlocal 的作用域
- chrome开发者工具各种骚技巧
- 安装了虚拟机后mysql用不了_在虚拟机上安装mysql,安装好了并且初始化之后,一直无法启动mysql如何解决?...
- 排球计分程序重构(四)
- SRv6技术课堂(一):SRv6概述
- Excel VBA编程实战宝典PDF扫描版电子书介绍
- 共享充电宝之争:胜于专利,败于骂街 | 一点财经
- 如何在表格里做计算机统计表,(excel怎么做统计表)excel表格如何制作数据表
- katago安装使用
- 什么是字长(百度百科)
- python怎么保存到桌面_python3应用windows api对后台程序窗口及桌面截图并保存的方法...
- 对于美国中部覆盖图防护林形态的自动检测技术
- 2023 物联网毕业设计选题推荐 100例
- HTML怎么建立两行四列的li,关于CSS如何实现多行多列布局的方法
- Springboot毕设项目烬燃电竞酒店管理系统7xgz8(java+VUE+Mybatis+Maven+Mysql)