面向对象

特征:继承,封装跟多态

 

类:相关属性和行为的集合

定义格式

public class ClassName{

成员变量

成员方法

}

1,成员方法不要写static关键字

2,成员变量是直接定义在类中,在方法外

public class student {

  String name;
  int age;

  public void eat() {
    System.out.println("eat");
}


  public void sleep() {
    System.out.println("sleep");
}

 

  public void study() {
    System.out.println("study");
}
}

 

使用

1,导包

2,创建

类名 对象名 = new 类名称();

student stu = new student();

3,使用

想用谁,就用对象名点谁;

public class JAVA1 {

  public static void main(String[] args) {
    student stu = new student();
    stu.name = "frfgrf";
    stu.age = 15;
      System.out.println(stu.age);
      System.out.println(stu.name);
    stu.eat();
    stu.sleep();
    stu.study();
}

}

 

局部变量没有默认值,如果想使用必须手动赋值。位于栈内存

成员变量,若没有赋值,会有默认值,规则跟数组一样。位于堆内存

 

 

封装性

方法就是一种封装

可以用private关键字将需要保护的成员变量进行修饰

 

间接访问private成员变量,设置一堆set/get方法

setXXX() 不能有返回值,参数类型和成员变量相同

getXXX() 不能有参数,返回值类型与成员变量对应

对于基本类型中的bool型,getXXX一定要写成isXXX

package demo2.java;

public class Student {

  private String name;
  private int age;
  private boolean male;


public void setName(String str) {
  name = str;

}
public String getName() {
  return name;

}

public void setAge(int num) {
  age = num;

}
public int getAge() {
  return age;

}

public void setMale(boolean b) {
  male = b;

}

public boolean isMale() {
  return male;

}


}

 

package demo2.java;

public class students {

public static void main(String[] args) {
// TODO Auto-generated method stub
  Student student = new Student();
  student.setAge(18);
  student.setName("marry");
  student.setMale(false);


  System.out.println("name is: " + student.getName());
  System.out.println("age is: " + student.getAge());
  System.out.println("is or not male: " + student.isMale());
}

}

 

封装优化1——this关键字

方法局部变量和类成员变量重名的时候,就近原则,优先使用 局部变量

需要访问本类的成员变量,需要使用 this.成员变量名(通过谁调用的方法,谁就是this【地址】)

package demo3.java;

  public class Person {
    String name;
   public void sayHello(String name) {
    System.out.println(name + ", hello i am " + this.name);

}
}

 

package demo3.java;

  public class demoperson {

    public static void main(String[] args) {
// TODO Auto-generated method stub
      Person person = new Person();
      person.name = "wang si cong";
      person.sayHello("ma yun ");
}

}

 

封装优化2——构造方法

专门用来创建对象的方法,通过关键字new创建对象时,其实就是住在调用构造方法

public 类名称(参数类型 参数名称){

方法体

}
1,构造方法的名称必须跟类名称完全一致
2, 不需要写返回值类型, 连void都不写
3, 不能return一个具体的返回值
4, 如果没有编写任何构造方法,编译器会赠送一个,没有参数,方法体什么事都不做

 

 


标准代码——JavaBean
1,所有成员变量都要使用private关键字
2,编写一个无参数跟全参数的构造方法
public class Student {
//成员变量
  private String name;
  private int age;
//构造方法
public Student() {}
  public Student(String name,int age) {
    this.name = name;
    this.age = age;
}
//成员方法
  publicvoid setName(String name) {
    this.name = name;
}
  public String getName() {
    return name;
}
  publicvoid setAge(int age) {
    this.age = age;
}
  publicint getAge() {
    return age;
}
}

 

 


public class TestStudent {
  public static void main(String[] args) {
//无参构造使用
    Student s= new Student();
    s.setName("柳岩");
    s.setAge(18);
    System.out.println(s.getName()+"‐‐‐"+s.getAge());
//带参构造使用
    Student s2= new Student("赵丽颖",18);
    System.out.println(s2.getName()+"‐‐‐"+s2.getAge());
}
}

 


SCANNER类


可以实现键盘输入数据到程序当中
只有java.lang下不需要导包
import java.util.Scanner;
public class Scanner_ {

   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      String str = sc.next();
      System.out.println(str);
      int num = sc.nextInt();
      System.out.println(num);
}

}


练习1 键盘输入两个数字求和
import java.util.Scanner;
public class Scanner_ {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int num1 = sc.nextInt();
    int num2 = sc.nextInt();
    System.out.println(num1+num2);


}

}

Random类

import java.util.Random

生成1,n之间随机数


import java.util.Random;

public class demo {

  public static void main(String[] args) {
    int n = 10;
    Random r = new Random();
    for (int i =0;i<100;i++) {
      int num = r.nextInt(n)+1;
      System.out.println(num);
}

}

}

猜数字小游戏 【1,100】

package demo3.java;

import java.util.Random;
import java.util.Scanner;
//1,产生随机数
//2.键盘输入
//3.获取键盘输入
//4.if判断 提示太大或者太小并且重试,猜中游戏结束
//5.重试就是再来一次, 不确定次数,用while

package demo3.java;

import java.util.Random;
import java.util.Scanner;
//1,产生随机数
//2.键盘输入
//3.获取键盘输入
//4.if判断 提示太大或者太小并且重试,猜中游戏结束
//5.重试就是再来一次, 不确定次数,用while


public class NumGame {

  public static void main(String[] args) {

    Random r = new Random();
    int answer = r.nextInt(100)+1;
    Scanner sc = new Scanner(System.in);
    System.out.println("Please input the number you guess : ");
    int count = 0;
    while (true) {
      if(count==10) {
      System.out.println("Your chance has run out,Game Over! ");
      break;}
      int guessNmuber = sc.nextInt();
      if (guessNmuber > answer) {
        count+=1;
      System.out.println("Your number is higher than the answeer, Please try again!");
      }else if(guessNmuber < answer) {
        count+=1;
      System.out.println("Your number is lowerr than the answeer, Please try again!");
      }else {
      System.out.println("Congratulations! Your guess is right");
        break;
}

}System.out.println("Game Over");
}

}

 

对象数组


ArryList长度是可变的
ArrayList<E> 泛型(只能是引用类型)

若想往集合中存储基本类型数据,必须使用基本类型对应的包装类

byte --->Byte

short --->Short

int ---->Integer

long ---->Long

float --->Float

double --->Double

char ---->Character

boolean --->Boolean

自动装箱,基本类型 -----》引用类型
自动拆箱,引用类型------》基本类型
创建
ArrayList<String> list = new ArrayList<String>();

直接打印得到的是内容,若为空,打印【】

常用方法


public boolean add(E e) :将指定的元素添加到集合的尾部。

public E remove(int index) :移除集合中指定位置的元素。返回被删除的元素。

public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。

返回值代表操作是否成功

public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。


import java.util.ArrayList;

public class DemoArryList {

  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    list.add("wenlong");
    list.add("sbg");
    list.add("ggr");
    list.add("gerg");

    System.out.println(list);
    System.out.println(list.get(2));
    System.out.println(list.remove(2));
    System.out.println(list);
    System.out.println(list.size());
    for(int i = 0;i<list.size();i++) {
    System.out.println(list.get(i));
}
}

}


生成6个1~33之间的随机整数,添加到集合,并遍历

import java.util.Random;

 

import java.util.ArrayList;

public class DemoAlist {

  public static void main(String[] args) {
    Random num = new Random();

    ArrayList<Integer> intList = new ArrayList<Integer>();

  for(int i =0;i<6;i++) {
    int temp = num.nextInt(33) + 1;
    intList.add(temp);
}

    System.out.println(intList);

    for(int i = 0;i<intList.size();i++) {
    System.out.println(intList.get(i));
}

}

}

自定义4个学生对象,添加到集合,并遍历

import java.util.ArrayList;

public class StudentArrayList {

  public static void main(String[] args) {
// TODO Auto-generated method stub
    ArrayList<Student> studentlist = new ArrayList<Student>();
    Student stu1 = new Student("zhao",18);
    Student stu2 = new Student("qian",28);
    Student stu3 = new Student("sun",38);
    Student stu4 = new Student("li",48);

    studentlist.add(stu1);
    studentlist.add(stu2);
    studentlist.add(stu3);
    studentlist.add(stu4);
    for(int i = 0;i<studentlist.size();i++) {
      System.out.println(studentlist.get(i).getName() + studentlist.get(i).getAge());
}

}


定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素
@元素@元素}。

import java.util.ArrayList;
public class Pt {

  public static void main(String[] args) {

  ArrayList<String> list = new ArrayList<String>();

    list.add("张三丰");
    list.add("宋远桥");
    list.add("张无忌");
    list.add("殷梨亭");
// 调用方法
    ptArry(list);
}

  public static void ptArry(ArrayList<String> list) {
    System.out.print("{");
    for(int i =0;i<list.size();i++) {
    
    if(i!=list.size()-1) {
    System.out.print(list.get(i)+"@");

    }else {
    System.out.print("}");
    }
    }

}

 

 

定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)
import java.util.ArrayList;
import java.util.Random;
public class EvenSelect {

  public static void main(String[] args) {
 
    ArrayList<Integer> list = new ArrayList<Integer>();
    Random num = new Random();
    for(int i = 0;i<20;i++) {
    int temp = num.nextInt(80);
    list.add(temp);
}

    System.out.println(SelectEven(list));
}
  public static ArrayList<Integer> SelectEven(ArrayList<Integer> list) {
    ArrayList<Integer> evenList = new ArrayList<Integer>();
    for(int i =0;i<list.size();i++) {
    if(list.get(i)%2==0) {
    evenList.add(list.get(i));
  }
  }
    return evenList;
}

}