1声明一个类的语法格式
这是写在两个文件的语法结构
public class 类 {
特征(Java中的变量)
行为(java 中暂时不带static的方法)
}
//这个是写在同一个文件的语法结构
calss Person {
属性
String name;
方法
public void eat () {
}
}
1.2创建类和带有main主函数的类可以写在一个文件夹中
2.构造方法
2.1无参构造方法
语句格式
public 类名 (){
语句体
}
class People {
//属性
String name;
int age;
//定义一个无参构造方法
public People () {
System.out.println("嘻嘻");
//this 当前对象
name = "狗蛋";
age = 12;
}
}
public class Demo4 {
public static void main(String[] args) {
//依靠构造方法去创建 对象
People people = new People();
people.name = "二狗";
people.age = 22;
System.out.println(people.name);//
System.out.println(people.age);//
People people2 = new People();
}
}
2.2有参构造方法
语法结构
public 类名 (参数) {
}
/
public Person (String name, int age) {
this.name = name;
this.age = age;
}
class Cat {
String name;
int age;
char sex;
//一旦在类中写了有参构造方法,默认无参构造方法就不在了
//有参构造方法 是特殊的方法
public Cat (String name, int age, char sex) {
//this 代表是当前对象
//this.name 当前对象的name属性
this.name = name;
this.age = age;
this.sex = sex;
}
}
public class Demo6 {
public static void main(String[] args) {
//创建对象和构造方法有关系, new Cat(); 依靠类中无参构造方法
Cat cat = new Cat("二虎", 1, '公');
cat.name = "二牛";
cat.age = 12;
cat.sex = '母';
System.out.println(cat.name);//
System.out.println(cat.age);//
System.out.println(cat.sex);//
}
}
3对象
3.1对象的内存分析
区域的名字 | 作用 |
寄存器 | 给CPU使用的,和开发没有关系 |
本地方法栈 | JVM在执行操作系统的时候会使用,和咱们没有关系 |
方法区 | 存储的是字节码文件 class文件 |
堆区域 | 存储对象或者数组的数据,凡是 new的东西和堆有关 |
栈区 | 存储的是八大基本数据类型的数据和对象的引用(内存地址) |
4构造代码块
构造代码块的目的:也是可以对对象的属性进行赋值。功能是和构造方法是一样的
语法格式:
{
语句体;
}
5成员变量
5.1成员变量
class Person1 {
//属性====》 成员变量 作用域是 整个类都可以使用的
String name;
int age;
public Person1() {
System.out.println(name);//null 成员变量可以先不赋值,提供一个默认值
}
public void test () {
System.out.println(age);//0
}
}
public class Demo4 {
public static void main(String[] args) {
Person1 person1 = new Person1();
person1.test();
}
}
5.2局部变量
public class Demo3 {
public static void main(String[] args) {
//int i = 20;
for (int i = 0; i < args.length; i++) {//int i = 0; 局部变量
System.out.println(i);
for (int j = 0; j < args.length; j++) {//{}是作用域
}
for (int j = 0; j < args.length; j++) {
}
}
//System.out.println(i);
}
public static void test () {//
int i = 10;
int a;//先声明变量 没有赋值的
System.out.println(i);
//System.out.println(a);//局部变量在使用的时候要赋值的
}
public static void test1 () {
int i = 10;
System.out.println(i);
}
}
6封装
Java封装 对属性的封装, 对方法的封装 , 对类的封装
现在咱们对属性进行封装:s
1.为每个属性加上一个修饰符 private (私有的)
2.在实体类中,书写相对应的set方法和get方法 进行操作
package com.qf.test;
class People {
//对象属性进行封装 加private关键字
private String name;
private int age;
//借助于set(设置)方法对属性进行赋值
//有一定规则的: set方法 (设置值的时候) 没有返回值的 void
//setName 为啥叫?setName set+ 变量的名字 作为咱们方法的名字 采用小驼峰的命名规则
public void setName (String name) {//此时 name = "黑蛋儿"
this.name = name;// this.name = "黑蛋儿";
}
//借助于get(得到)方法对属性进行取值 得有返回值的
public String getName () {
return this.name;
}
public void setAge (int age) {
this.age = age;
}
public int getAge () {
return age;
}
}
public class Demo5 {
public static void main(String[] args) {
People people = new People();
//结果发现报错了 私有的变量只能在本类中使用,出了这个类无法使用 咋办?
people.setName("黑蛋儿");//会赋值给 第12行的方法的形参name
//以上代码已经将"黑蛋儿" 赋值给对象的name
people.setAge(18);
//取值
System.out.println("people的名字为:"+people.getName());
System.out.println("people的年龄为:"+people.getAge());
}
}