对象的使用
//对象的使用
//格式 类名 对象名 = new 类名()
//范例 Phone p = new Phone();
//使用对象
//格式 对象名.变量名
//范例: p.brand;
//使用成员方法
// 对象名.方法名()
//范例 : p.call();
public class Application {
public static void main(String [] args){
Phone p = new Phone();
System.out.println(p.brand);
System.out.println(p.price);
p.call();
p.sendMessage();
}
}
public class Phone {
String brand ="小米";
int price = 8000;
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
public class Application {
public static void main(String [] args){
Test pofen = new Test();
System.out.println(pofen.name+" " + pofen.age);
pofen.age = 20;
pofen.name ="pofenx";
System.out.println(pofen.name+pofen.age);
pofen.study();
pofen.doHomework();
}
}
public class Test {
String name ;
int age;
public void study(){
System.out.println("加油好好干");
}
public void doHomework(){
System.out.println("一年赚个几百万");
}
}
- 成员变量: 类中方法外的对象
- 局部变量:方法中的对象
成员变量和局部变量的区别
| 区别 | 成员变量 | 局部变量 |
|---|---|---|
| 类中位置不同 | 类中方法外 | 方法内或方法声明上 |
| 内存中位置不同 | 堆内存 | 占内存 |
| 生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
| 初始化值不同 | 有默认的初始化值 | 没有默认的初始化值,必需先定义,赋值,才能使用 |
setter/getter
public class Application {
public static void main(String [] args){
Test pofen = new Test();
pofen.setAge(100);//set设置
pofen.name="pofenx";
pofen.show();
System.out.println(pofen.getAge());//get获取
}
}
public class Test {
public String name ;
private int age;
public void setAge(int a){
if(a<0||a>150){
System.out.println("输入有误");
}else{
age = a;
}
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name+","+age);
}
public class Test {
public String name ;
private int age;
public void setAge(int age){
if(age<0||age>150){
System.out.println("输入有误");
}else{
this.age=age;
}
}
public int getAge(){
return this.age;//加了this指是成员变量
}
public void show(){
System.out.println(name+","+age);
}
public void study(){
System.out.println("加油好好干");
}
public void doHomework(){
System.out.println("一年赚个几百万");
}
}
-
this修饰的变量是成员变量
-
this解决局部变量隐藏成员变量的问题
-
构造方法
格式
public class 类名{
修饰符 类名(参数){
}
}
public class Student{
public student(){
//构造方法书写内容
}
}
public class Application {
public static void main(String [] args){
Test s = new Test();
s.show();
}
}
public class Test {
public Test(){
System.out.println("无参构造方法");
}
public void show(){
System.out.println("ok");
}
}
/*
无参构造方法
ok
*/
public class Application {
public static void main(String [] args){
Test s = new Test();
s.show();
Test S2 = new Test("波哥");
S2.show();
Test S3 = new Test("帅哥",20);
S3.show();
}
}
public class Test {
String name ;
int age;
public Test(){
System.out.println("无参构造方法");
}
public Test(String name){
this.name =name ;
}
public void show(){
System.out.println(name+","+age);
}
public Test(String name,int age){
this.name=name;
this.age= age;
}
}
/*
无参构造方法
null,0
波哥,0
帅哥,20
*/
标准类的制作
- 成员变量
- 使用private修饰符修饰
- 构造方法
- 提供一个无参构造方法
- 提供一个带多个参数的构造方法
- 成员方法
- 提供每一个成员变量对应的setXxx()/getXxx()
- 提供一个显示对象信息的show()
- 创建对象并为其成员变量赋值的两种方式
- 无参构造方法创建对象后使用setXxx赋值
- 使用带参构造方法直接创建带有属性的对象
public class Test {
private String name ;
private int age;
public Test(){}
public Test(String name ,int age){this.age=age ;this.name=name;}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age= age;
}public int getAge(){
return age;
}
public void show(){
System.out.print(name+","+age);
}
}
public class Application {
public static void main(String [] args){
Test s1 =new Test();
s1.setName("大帅哥");
s1.setAge(100);
s1.show();
Test s2 = new Test("大帅哥",100);
s2.show();
}
}
API
-
API(Application Programming Interface)应用程序编程接口
-
JAVA API:指的就是JDK中提供的各种功能的java类,这些类见底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用(比如编写一个机器人程序去控制踢足球,程序需要向机器人发处向前跑,射门等信息,机器人厂商一定会提供一些可用于控制机器人的接口类,这些类中定义好了操作机器人的各种方法,其实,这些接口类就是机器人厂商提供给应用编程的接口,大家吧这些类类称为API)
-
调用方法的时候,如果有明确的返回值,我们变量接收,可以手动完成,也可以使用快捷键 (Ctrl+Alt+v)
String
String内在java.lang包下,所以不需要导入包
String类代表字符串,java程序种所有的字符文字如(“ABC”)都被实现为此类的实例
也就是说,java程序中所有的引用号字符串,都是String类的对象
- 字符串的特点
- 字符串不可变,他的值在创建后不能被更改
- 虽然String的值是不能变的,但是他们可以被共享
- 字符串效果上相当于(char[]),但是底层原理是数组(byte[])
String 构造方法
| 方法名 | 说明 |
|---|---|
| public String() | 创建一个空白字符串对象,不包含任何内容 |
| public String(char[] chs) | 根据字符数组内容,来创建字符串对象 |
| public String(byte[] bys) | 根据字节数组内容,来创建字符串兑现 |
| String s ="abc" | 直接赋值的方式创建字符串对象,内容就是abc |
public class Application {
public static void main(String [] args){
String s1 = new String();
System.out.println("s1:"+s1);
char[] chs = {'a','b','c'};
String s2 = new String(chs);
System.out.println("s2"+s2);
byte[] bys = {97,98,99};
String s3 = new String(bys);
System.out.println("s3:"+s3);
String s4 = "abc";
System.out.println(s4);
}
}
/*
s1:
s2abc
s3:abc
abc
*/
- 推荐使用直接赋值
String s1 = new String(chs);
String s2 = new String(chs);
- String对象的特点
- 通过new创建的字符串对象,每一处new都会申请一个内存空间,谁让雷村相同,但是地址值不同
- 以" "方式给出的字符串,只要字符串序列相同(顺序的大小相同),无论在程序代码种出现几次。JVM都会只建立一个String对象,并在字符串中维护
String s3 = "abc";
String s4 = "abc";
- 字符串的比较
使用==比较
- 基本类型:比较值是否相同
- 引用类型:比较地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫equals
1. public boolean equals(Object anObject):将此字符串与指定对象进行必交,由于我们比较的是字符串对象,所以参数直接传递一个字符串
public class Application {
public static void main(String [] args){
//构造方法得到对象
char[] chs = {'a','b','c'};
String s1 = new String (chs);
String s2 = new String (chs);
//直接赋值得到对象
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));
}
}
/*
false
false
true
=========
true
true
true
*/
用户登录
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
String username = "admin";
String password = "pofenx";
for (int i = 0; i < 5; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入账号");
String s1 = sc.nextLine();
System.out.println("请输入密码");
String s2 = sc.nextLine();
if (s1.equals(username) && s2.equals(password)) {
System.out.println("登录成功");
break;
} else {
if ((4 - i) == 0) {
System.out.println("账号已经锁定,请联系管理员");
} else {
System.out.println("登录失败你还有" + (4 - i) + "次机会");
}
}
}
}
}