Java基础学习
一 面向对象
1.1 介绍对象
简单理解:
- 拿东西过来做对应的事情
- 获取对象并使用
1.2 设计对象并使用
-
类
:是对象共同特征的描述 -
对象:
是真实存在的具体东西 -
如何得到类对象
类名 对象名 = new 类名():
Phone p = new Phone();
如何适用对象
- 访问属性:
对象名.成员变量
- 访问行为:
对象名.方法名(.......)
![]()
1.2.1定义类的补充注意事项
-
用来描述一类事物的类,专业叫做:
Javabean类
在Javabean类中,是不写main方法的。 - 在以前,编写main方法的类,叫做测试类我们可以在测试类中创建javabean类的对象并进行赋值调用
- 类名首字母建议大写,需要见名知意,驼峰模式
- 1个Java文件中可以定义多个cass类,目只能一个类是public修饰,而且pulic修饰的类名必须成为代码文件名实际开发中建议还是
一个文件定义一个class类
- 成员变量的完整定义格式是:
修饰符 数据类型 变量名称 =初始化值;
,一般无需指定初始化值,存在默认值
1.3 封装
如何正确的社会及对象的属性和方法
对象代表什么,就得封装对应的数据,并提供数据对应的行为
例如:人关门这一动作,关门这个动作行为是属于
门
的,
因为人只是给了门一个作用力,导致门自己关上了
好处:
- 让编程变得很简单,有什么事,找对象,调方法就行。
- 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行
1.3 private关键字
- 是一个权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 被private修饰的成员只能在本类中才能访问
public class GirlFriend {
private String name;
private int age;
private String gender;
}
会使得数据无法改变,我们应该用以下代码实现对数据的修改判断
set方法: 给成员变量赋值
get方法: 对外提供成员变量的值
public class GirlFrend {
public int age;
//作用: 给成员变量name进行赋值的
public void setAge(int a){
if(a>=18 && a<50){
age = a;
}else{
System.out.println("非法数据");
}
}
//作用:对外提供name属性的
public int getAge(){
return age;
}
}
1.4 this关键字
作用:
可以区别成员变量和局部变量
就近原则
:
这个变量你谁近就听谁的
public class GirlFriend {
//成员变量
private int age;
public void method(){
//局部变量
int age = 10;
//谁近听谁的
System.out.println(age);
//先找成员变量
System.out.println(this.age);
}
}
1.5 构造方法
格式:
特点:
1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void都没有
3.没有具体的返回值 (不能由retrun带回结果数据)
执行时机
1.创建对象的时候由虚拟机调用,不能手动调用构造方法
2.每创建一次对象,就会调用一次构造方法
构造方法的注意事项:
构造方法的定义
1 .如果没有定义构造方法,系统将给出一个默认的
2.无参数构造方法如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载
带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载
推荐的使用方式
无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法
1.6 标准的JavaBean
- 类名需要见名知意
- 成员变量使用private修饰
- 提供至少两个构造方法
1.无参构造方法
2.带全部参数的构造方法- 成员方法
1.提供每一个成员变量对应的setXxx()/getXxx()
2.如果还有其他行为,也需要写上
public class User {
private String Username;
private String Password;
private String Email;
private int age;
public User() {
}
public User(String Username, String Password, String Email, int age) {
this.Username = Username;
this.Password = Password;
this.Email = Email;
this.age = age;
}
/**
* 获取
* @return Username
*/
public String getUsername() {
return Username;
}
/**
* 设置
* @param Username
*/
public void setUsername(String Username) {
this.Username = Username;
}
/**
* 获取
* @return Password
*/
public String getPassword() {
return Password;
}
/**
* 设置
* @param Password
*/
public void setPassword(String Password) {
this.Password = Password;
}
/**
* 获取
* @return Email
*/
public String getEmail() {
return Email;
}
/**
* 设置
* @param Email
*/
public void setEmail(String Email) {
this.Email = Email;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
快捷键:
- alt+inset 进行创建
- 添加插件ptg(推荐很香)
点击settings
![]()
右键点击JavaBean
1.7 对象内存图
1.7.1 一个对象的内存图
- 加载class文件
- 申明局部变量
- 在堆内存中开辟一个空间
- 默认初始化
- 显示初始化
- 构造方法初始化
-
将堆内存中的地址值赋值给左边的局部变量
1.7.2 两个对象内存图
1.7.两个引用指向同一个对象
如果改变stu1里面的值,那么stu2也会改变,因为赋值的时候,是把stu1里面的地址赋值给了stu2,所以他们指向的是同一个空间
1.8 基本数据类型和引用数据类型
1.8.1 基本数据类型
在变量中存储的真实数据
1.8.2 引用数据类型
存储的是数据的地址,可以通过地址去访问
1.9 this的内存原理
this的本质: 代表方法调用者的地址
this的作用:区分成员和局部变量
键盘输入
键盘录入
第一套体系
:
nextInt(); 接收整数
nextDouble();接收小数
next();接收字符串
遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了
第二套体系
:
nextLine();接收字符串
可以接收空格,制表符,遇到回车才停止接受数据