第八章 字符串

1,带参数的方法

(1)传值调用:基本类型(int,float,char,double,boolean,long,short...String)的参数都会采用该方式传参
(2)传址调用: 引用类型(数组,对象,除String)的参数都会采用该方式传参。

2, 练习:编写方法实现如下功能

(1)求年龄最大的学生
(2)对所有学生按年龄从大到小排序

public class Student{String name;int age;public String toString(){return name;}
}
import java.util.*;
public class Demo2{public Student getMaxStu(Student[]stus){Student stu=null;for(int i=0;i<stus.length;i++){if(stu.age<stus[i].age){stu=stus[i];}}return stu;}public void orderStu(Student[] stus){Student temp=null;for(int i=0;i<stus.length;i++){for(int j=0;j<stus.length-i-1;j++){if(stus[i].age<stus[i+1].age){temp=stus[i];stus[i]=stus[i+1];stus[i+1]=temp;}}}}public static void main(String[]args){Student[] stus=new Student[3];Student s1=new Student();s1.name="张三";s1.age=23;stus[0]=s1;Student s2=new Student();s2.name="李四";s2.age=128;stus[1]=s2;Student s3=new Student();s3.name="王五";s3.age=53;stus[2]=s3;Demo2 d=new Demo2();Student s=d.getMaxStu(stus);System.out.println("年龄最大的是:"+s.name);System.out.println("----------------------------------");d.orderStu(stus);System.out.println(Arrays.toString(stus));}
}


API=APplication Interface
API帮助文档
1,在java中位于java.lang.*中的类都不用import
2,一个类中的方法,如果方法前使用static修饰,则该方法可以通过类名来直接调用
    public class A{
        public static void aa(){...}
        public void bb(){...}
    }
    aa()方法的调用方式:
        A.aa();
        A a=new A();
        a.aa();
    bb()方法的调用方式:    
        A a=new A();
        a.bb();

3,String类

(1)创建对象

String s="字符串";//先检查有没有相同的字符串,如果没有,则分配空间(共享的),有则指向对应空间。
    String s=new String("字符串"); //就一定会分配新空间,而且新空间是独立的空间。
    两张字符串的比较方式:
    a,== 比较的是对象在内存中的地址是否一致。
    b,equals方法,比较的是字符串的内容

(2)字符串中的常用方法:

int length()方法:返回字符串的长度
    boolean equals(str)方法:比较字符串的内容是否相等
        忽略大小写比较两个字符串:
            方式1:equalsIgnoreCase方法
            方式2:结合toUpperCase()或toLowerCase()
    字符串连接:
        +符号:+碰到字符串才是连接符
        String concat(String);
    字符串提取:
        int indexOf(char/String)
        String substring(begin,[end]); 包前不包后
    去除字符串前后空格:String trim();
    字符串分割方法:String[] split("分隔符");
        "a,b,c,d"------>split(",")---------->{"a","b","c","d"}

(3)输入一个字符串,检查是否是合法的java文件名

a,以.java结尾
    b,由数字、字母、_和$组成,并且不能以数字开头
        boolean flag=false;
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
            if(c<'0'&&c>'9'){
                flag=true;
                break;
            }
        }
    c,首字母大写(首字母不能使用$和_)
    d,不能使关键字:{"Date","String","Arrays","System",...}
        My.java
        
    public boolean checkFile(String fileName){
        
    }

代码:https://blog.csdn.net/tht990126/article/details/83993095

4,StringBuffer

(1)创建对象方式:

StringBuffer s=new StringBuffer();
    StringBuffer s=new StringBuffer("字符串");

(2)常用方法

append("字符串"):追加字符串,拼接字符串。
    toString():将StringBuffer转换成String

(3)使用场合

String的不变性:一旦我定义了一个字符串,那么它的内容将无法改变。
        改变String的内容,就会分配新的空间来存储。
    StringBuffer:改变内容不会新分配空间,提高了程序的效率

5,字符串练习:

(1)输入一个日期(yyyy/mm/dd 或 yyyy-mm-dd),截取年、月、日。

public MyDate get(String date){
        String year="2012";
        int a=Integer.parseInt(year);
        if(){
            MyDate md=new MyDate();
            md.year=?;
            md.month=?;
            md.day=?;
            return md;
        }else{
            return null;
        }
    }
    class MyDate{
        int year;//1980~2099
        int month;//1~12
        int day;//1~31

}

(2)编写程序实现:输入一篇文章,统计该文章中“中国”的出现次数

public int count(String article){      
    }

(3)实现用户注册的验证:用户名、密码、确认密码、身份证、手机号和座机号

a,用户名只能由数字和字母组成,并且长度必须在3~12之间。
        b,密码长度必须大于6位,并且密码和确认密码必须一致。
        c,身份证号必须是15位或18位,18位身份证号允许最后一位为大写字母X
        d,手机号必须是11位数组,并且以1开头。
        e,座机号区号由3位数字组成,电话号码为8位数字。029-88888888
    public String check(String name,String password,String repassword,String id,String phone,String telphone){
        return "错误消息"/"注册成功";
    }


面向对象


第一章 面向对象编程:封装、继承和多态

1,面向对象------封装(3W1H)

(1)为什么要使用封装?

为了不让外界随意修改或访问该类的属性,对属性进行私有化(private),从而隐藏细节。

(2)封装的实现方式:

私有的属性+公共get/set方法
    getXxx()/setXxx();
    private String name;
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }

(3)封装的好处:增加了数据访问的限制,增强了程序的可维护性和灵活性。

2,构造方法

(1)构造方法的规则:

public 类名([参数]){
            //给属性赋值
        }
        public B(){
        }

(2)构造方法的意义:

a,构造方法是用于创建对象的,使用new关键字来进行调用。
    b,作用:初始化工作

(3)默认构造方法:任何类都会有一个默认的无参构造方法

注意:一旦自己定义了构造方法,则默认的无参构造方法就不会产生了。

练习:

public class Book{
    private String title;
    private Stirng author;
    private int pageNum;
    public Book(){ //水浒
    }
    public Book(String title){//西游记
        this.title=title;
        author="吴承恩";
        pageNum=340;
    }
    public Book(String title,String author){ //红楼梦
        this.title=title;
        this.author=author;
        this.pageNum=346;
    }
    public Book(String title,String author,int pageNum){ //三国演义
        this.title=title;
        if(pageNum)
        this.pageNum=pageNum;
    }
    setter/getter...
    public void setPageNum(int pageNum){
        if(pageNum)
    }
    
}

public class Book{private String title;private String author;private int pageNum;public Book(){}public Book(String title){this.title=title;this.author="吴承恩";this.pageNum=600;}public Book(String title,String author){this.title=title;this.author=author;this.pageNum=500;}public Book(String title,String author,int pageNum){this.title=title;this.author=author;if(pageNum>200){this.pageNum=pageNum;}else{this.pageNum=200;}}public String getTitle(){return title;}public void setTitle(String title){this.title=title;}public String getAuthor(){return author;}public void setAuthor(String author){this.author=author;}public int getPageNum(){return pageNum;}public void setPageNum(int pageNum){if(pageNum>200){this.pageNum=pageNum;}else{this.pageNum=200;}}public String toString(){return "《"+title+"》的作者是"+author+",页数为"+pageNum;}
}
class TestBook{public static void main(String[]args){Book shz=new Book();shz.setTitle("水浒传");shz.setAuthor("施耐庵");shz.setPageNum(120);System.out.println(shz);Book xyj=new Book("西游记");System.out.println(xyj);Book hlm=new Book("红楼梦","曹雪芹");System.out.println(hlm);Book sgyy=new Book("三国演义","罗贯中",2300);System.out.println(sgyy);}
}

Java实训(181110~181111)相关推荐

  1. java实训手册_java实训项目用户手册

    java实训项目用户手册 1 用户手册 第 1章 引言 1.1编写目的编写本手册的主要目的是为了方便使用的用户管理系统能够更加方便使用 此系统,以及更快的掌握JDK,MySQL,MyEclipse使之 ...

  2. 2020年Java实训项目【GUI学生信息管理系统】目录

    Java实训项目1:GUI学生信息管理系统 - 实训概述 Java实训项目2:GUI学生信息管理系统 - 系统概述 Java实训项目3:GUI学生信息管理系统 - 涉及知识点 Java实训项目4:GU ...

  3. Java实训项目:GUI学生信息管理系统(2019)【下】

    Java实训项目:GUI学生信息管理系统(2019)[下] 本篇目录 六.实现步骤 13.应用程序类 14.窗口界面类(JFrame)

  4. Java实训项目:GUI学生信息管理系统(2019)【中】

    Java实训项目:GUI学生信息管理系统(2019)[中] 本篇目录 四.涉及知识点 1.Java基本语法 2.Java流程控制

  5. Java实训项目:GUI学生信息管理系统(2019)【上】

    Java实训项目:GUI学生信息管理系统(2019)[上] 本篇目录 零.实训概述 1.实训目的 2.项目简介

  6. Java实训项目:GUI学生信息管理系统(2017)

    Java实训项目:GUI学生信息管理系统(2017) 实训目的:让学生综合运用J2SE有关知识开发[学生信息管理系统].主要涉及程序控制结构.面向对象编程.图形用户界面.Java数据库应用.MySQL ...

  7. java实训心得感想30字,java实训心得体会感想

    java实训心得体会感想 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.通过本次实训,受益很多,下面谈谈个人的心得体会.本文是java实训心得,希望对大家有帮助. java实训心得篇一 ...

  8. java实训意义_java实习心得体会

    通过java实习,我自身发生了重大的转变,我相信我会在JAVA开发这条路上走的更长更远,分享心得体会.下面是学习啦小编为大家收集整理的java实习心得体会,欢迎大家阅读. java实习心得体会篇1 经 ...

  9. 简单计算器(Java实训)

    简单计算器(Java实训) 实训目的: 掌握 Java GUI 开发中的布局管理和事件处理机制. 实训要求: (1)要使用 java 的 GUI 设计出计算器界面.(2)通过界面 按钮,可以实现整数或 ...

最新文章

  1. Tomcat debug启动出错Unable to open debugger port (127.0.0.1:62947): java.net.SocketException socket clo
  2. Spring事物配置文件
  3. 计算机鼠标左键的主要应用,鼠标的应用
  4. 信创项目基础软件都包括哪些?你要了解
  5. Android项目旋转屏幕数据丢失的原因及解决
  6. 毁人不倦 - 许嵩 - 苏格拉没有底
  7. Data Vault初探(十) —— 星型模型向Data Vault模型转化
  8. nginx中配置gzip_static on提示nginx: [emerg] unknown directive “gzip_static“ in
  9. yolov7的export.py转换时显存报错 If reserved memory is >> allocated memory try setting max_split_size_mb to a
  10. 三角形外接球万能公式_任意四面体的外接球的半径(克列尔(A.L.Crelle)公式)
  11. 数据库【MySQL数据库介绍】
  12. 如何使自己跳得更高?------学习跳蚤效应的五点体会
  13. 美国to B市场为啥如此发达?
  14. P2P网贷易遭黑客攻击
  15. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量
  16. 奥迪 a4 编码 控制计算机,大众/奥迪车电脑编码大全).doc
  17. opencv下使用SVM进行简单颜色分类
  18. 三菱q系列plc连接电脑步骤_三菱q系列plc cc-link通讯方法的实现-说明书.pdf
  19. xshell 点击绿方块打不开xftp提示需要下载
  20. 关于投篮的数学建模模型_投篮问题的数学建模

热门文章

  1. 软考-信息技术发展(二)
  2. MFC Combox
  3. qrcode 使用总结
  4. 组合数学(1)——二分图
  5. android p红米note2,红米Note 2有NFC吗?红米Note2支持NFC吗?
  6. 自旋锁和互斥锁的区别
  7. VI下删除文本中的^M
  8. re.match()正则表达式
  9. 华为Linux送的u盘,微软无奈,断供系统没用,华为和荣耀给用户赠送带Windows的U盘...
  10. 【考研·数据结构】408真题 (2012年42题) 寻找第一个公共后缀的位置】