类是对现实生活中一类具有共同属性和行为的事物的抽象
对象:真实的实体,类的客观体现。
类的特点:类是对象的数据类型,类是具有相同实行和行为的一组对象的集合。
类的组成:属性和行为。
属性:通过成员变量来体现。
行为:通过成员方法来体现。这里的成员方法指的是非static修饰的方法。
局部变量和成员变量:
成员变量:类的方法外
局部变量:方法中的变量
封装:
private是一个权限修饰符
//可以修饰成员成员变量和成员方法
//作用是保护成员不被别的类使用,被private修饰的成员体只能在本类中才能被访问。
//如果其他的类想要使用被private修饰的成员,必须用get和ste方法
this关键字
this修饰的变量用于指代成员变量,方法的形参如果与成员变量名相同,
不带this修饰的指形参,而不是成员变量
如果方法的形参没有与成员变量同名,不带this的指成员变量
什么时候用this,解决局部变量隐藏成员变量
-----------------------------
封装是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,
外界是无法直接操作的,
封装原则:将类的某些信息隐藏在类的内部,不允许程序直接访问,而是通过该类提供的方法来实现对
隐藏信息的操作和访问成员变量private,提供对应的get和set方法
封装的好处:通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
构造方法:
作用:创建对象
功能:完成对象的数据初始化
构造方法的注意事项:
1构造方法的创建 如果没有定义构造方法,系统会给出一个默认的无参构造方法
如果定义了构造方法,系统将不在提供默认的构造方法
2构造方法的重载,
如果自定义了带参的构造方法,还要使用无参的构造方法,就必须再写一个无参的构造方法
3推荐使用方式,
无论是否使用,都手工书写一个无参的构造方法。
标准类:
成员变量,构造方法,成员方法(包括get,set,普通方法等)
public class tt {
private String name;
private int age;
public tt() {
}
public tt(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show(){
System.out.println(name+","+age);
}
}
public class test01 {
public static void main(String[] args) {
tt t=new tt();
t.setName("hehe");
t.setAge(20);
t.show();
tt t2=new tt("zz",20);
t2.show();
}
}
---------------------------------------------
String:字符串类
通过new创建的对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
以String s1=“abc”方式给出的字符串,只要字符串序列相同,无论在代码中出现几次,虚拟机都只会建立一个String,并在字符串池中维护。
equals:字符串的比较。
用户登录实例:
public static void main(String[] args) {
String username="zhangshen";
String password="123456";
for(int a=0;a<3;a++){
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String name=sc.nextLine();
System.out.println("请输入密码");
String pas =sc.nextLine();
if(name.equals(username)&&pas.equals(password)){
System.out.println("登录成功");
break;
}else{
if(2-a==0){
System.out.println("你的账户被锁定,请联系管理员");
}else {
System.out.println("登录失败,你还有" + (2 - a) + "次机会");
}
}
}
}
}
---------------------遍历
System.out.println("请输入一个字符串");
String line=sc.nextLine();
for(int a=0;a<line.length();a++){
System.out.println(line.charAt(a));
}
--------------------------------------------
键盘录入字符串并统计数量:
package com;
import java.util.Scanner;
public class Stringtest03 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
int a=0;
int b=0;
int c=0;
for(int i=0;i<line.length();i++){
char ch=line.charAt(i);
if(ch>'a'&& ch<'z'){
a++;
}else if(ch>'A'&&ch<'Z'){
b++;
}else if(ch>'0'&&ch<'9'){
c++;
}
}
System.out.println("小写字母数:"+a+"大写字母数"+b+"数字数"+c);
}
}
-------------------------
字符串反转:
package com;
import java.util.Scanner;
public class Stringtest05 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line=sc.nextLine();
String as=reser(line);
System.out.println("反转后的字符串是:"+as);
}
public static String reser(String s){
String ss="";
for(int a= s.length()-1;a>=0;a--){
ss+=s.charAt(a);
}
return ss;
}
}
----------------------------------------------------
StringBuilder:可变字符串类
添加和反转:
package com.it01;
public class StringBuilder02 {
public static void main(String[] args) {
StringBuilder sb1=new StringBuilder();
sb1.append("hhhh");
sb1.append("rr");
sb1.append("eee");
System.out.println(sb1);
StringBuilder sb2=new StringBuilder();
sb2.append("hh").append("ee").append(1000);
System.out.println(sb2);
sb2.reverse();
System.out.println(sb2);
}
}
b : String和 a: StringBuilder之间的转化:
a到b,通过toString()
b到a,通过构造方法
StringBuilder s2=new StringBuilder("hhhhh");
String s1=s2.toString();
b到a,通过构造方法
String s="hhhhhh";
StringBuilder s1=new StringBuilder(s);
package com.it01;
public class StringBuilder03 {
public static void main(String[] args) {
StringBuilder sb1=new StringBuilder();
sb1.append("hhh");
//从builder到string
String s=sb1.toString();
System.out.println(s);
String s2="wwwws";
StringBuilder sb2=new StringBuilder(s2);
System.out.println(sb2);
}
}
--------------------------------------
集合:
集合类的特点:提供一种存储空间可变的存储类型,存储的数据容量可以发生改变
集合类有很多,先了解一个:ArrayList
ArrayList<String> array = new ArrayList<String>();
末尾添加
array.add("hee");
指定位置添加
array.add(1,"aaa");
for(int a=0;a<array.size();a++){
String s=array.get(a);
System.out.println(s);
}
综合小案例:学生管理系统
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class test01 {
public static void main(String[] args) {
ArrayList<st> array = new ArrayList<st>();
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 (line) {
case "1":
add(array);
break;
case "2":
delete(array);
break;
case "3":
update(array);
break;
case "4":
findall(array);
break;
case "5":
System.out.println("谢谢使用");
System.exit(0);//虚拟机退出
}
}
}
public static void add(ArrayList<st> array) {
Scanner sc = new Scanner(System.in);
String name;
while (true) {
System.out.println("请输入学生姓名");
name = sc.nextLine();
boolean flag = isUsed(array, name);
if (flag) {
System.out.println("您输入的学号已经被使用,青虫新输入");
} else {
break;
}
}
System.out.println("请输入血红色呢个的年龄");
int age = sc.nextInt();
st s1 = new st();
s1.setAge(age);
s1.setName(name);
array.add(s1);
System.out.println("添加成功");
}
public static boolean isUsed(ArrayList<st> array, String name) {
boolean flag = false;
for (int i = 0; i < array.size(); i++) {
st s = array.get(i);
if (s.getName().equals(name)) {
flag = true;
break;
}
}
return flag;
}
public static void delete(ArrayList<st> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的姓名");
String name = sc.nextLine();
int index = -1;
for (int a = 0; a < array.size(); a++) {
st s = array.get(a);
if (s.getName().equals(name)) {
array.remove(a);
index = a;
break;
}
}
if (index == -1) {
System.out.println("信息不存在,请重新输入");
} else {
System.out.println("成功删除");
}
}
public static void update(ArrayList<st> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改的学号");
String name = sc.nextLine();
int index = -1;
System.out.println("请输入新的年龄");
int age = sc.nextInt();
st s = new st();
s.setAge(age);
for (int a = 0; a < array.size(); a++) {
st ss = array.get(a);
if (ss.getName().equals(name)) {
array.set(a, s);
index = a;
break;
}
}
if (index == -1) {
System.out.println("信息不存在,请重新输入");
} else {
System.out.println("成功删除");
}
}
public static void findall(ArrayList<st> array) {
if (array.size() == 0) {
System.out.println("无信息,请先添加");
//为了让层序不在往下执行
return;
}
System.out.println("姓名\t\t\t年龄");
for (int a = 0; a < array.size(); a++) {
st s = array.get(a);
System.out.println(s.getName() + "\t\t" + s.getAge());
}
}
}