Java实训(181110~181111)

第八章 字符串

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);
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值