1.实例化对象
语法: 类名 对象名 = new 类名();
详细:
类名:自定义的类名(或者是jdk提供类) Student Scanner(首字母必须大写)
对象名:也就是给具体的对象取一个名字(通俗易懂 遵循驼峰命名)
= 赋值操作 将堆内存中地址值 赋值给栈内存中的引用(对象名)
new 在堆内存中开辟空间 会给内中属性赋默认值
类名 后面类名必须与前面类名一样
匿名对象
匿名对象:也就是没有名字的对象
语法: new 类名() ==> 例子: new Student() new Person()
使用场景:
1只需要调用类的方法一次的时候 就可以使用匿名对象来进行调用,使用这种方式的好处: 可以节省内存空间
2.在方法调用的时候 可以作为方法的实参
调用
方法的申明
3.使用匿名对象作为方法的返回值类型
方法的申明
方法的调用
匿名对象 是最先被垃圾回收期收回 因为没有指向任何栈内存中的引用
静态变量的特点:
1.静态变量是优先于对象进行加载
2.静态变量是存在方法区的静态区间中
3.静态变量能够实现所以对象进行共享数据
4.静态变量赋值 取值
赋值:类名.属性=值(使用这种方式) 对象名.属性=值(不推荐使用)
取值 :类名.属性 ==>取值 (常用这种方式)
对象名.属性 ==>取值 但是一般不推荐使用
静态的注意事项
1.静态方法定义 只需要在方法的返回值前面加上static关键字
语法:
public static void showInfo(); main()也是静态方法 只是一个特殊的静态方法
2.静态方法中是不能来访问非静态的变量 原因: 静态方法是优先于对象而存在 而对象的属性只有创建对象成功之后才能进行赋值操作,静态方法早已经加载到静态区间中 所以肯定不访问
3.静态的方法不能调用非静态的方法
4.静态方式不能来访问this
总计: 静态方法不能来访问非静态的资源
5.非静态方法是可以调用静态方法的
6.如果不是一定要使用静态的 就不需要使用静态 特别是索引 还是经常发生改变的数据尽量别使用静态的 在开发过程中一般工具类的使用就会使用静态
静态变量与成员变量区别
1.俗称:
静态变量 又被称为类变量
成员变量 又被称为对象变量
2.存的位置不同
静态变量是存在方法区的静态区间中
成员变量是存在堆内存中
3.生命周期
成员变量的生命周期 是随着对象的加载而加载 随着对象的销毁而销毁
静态变量的生命周期 是随着类的加载而加载 随着类的销毁而销毁
4.调用方法不同
静态变量 可以 使用类名来直接调用 也可以使用对象名来进行调用
成员变量 只能是对象名来进行调
工具类
其实就一个普通的java类 但是这个类中提供了很多静态的方法(在项目供别人来使用)
编写一个数组工具类
以上是我得总结,有一部分在学校没有听懂,所以这部分总结也是这一部分。
作业
1.类的成员变量:
请定义一个交通工具(Vehicle)的类,其中有:属性:速度(speed),体积 (size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减 速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方 法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减 速的方法对速度进行改变。
Vehicle类
public class Vehicle {
int speed;
int size;
public void setSize(int size) {
this.size = size;
}
public void move(){
System.out.println("车子开起来了");
}
public void setSpeed(int speed){
this.speed=speed;
}
public void speedUp(int a){
speed+=a;
}
public void speedDown(int b){
speed-=b;
}
public void play(){
System.out.println("速度是"+speed+"重量是"+size);
}
}
VehicleTest类
public static void main(String[] args) {
Vehicle car=new Vehicle();
car.move();
car.setSpeed(120);
car.setSize(1500);
car.speedUp(10);
car.speedDown(20);
car.play();
}
2.类的成员变量与方法、构造方法
在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那 么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分 (minute),秒(second),为了保证数据的安全性,这三个成员变量 应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化 成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。
MyTime类
public class MyTime {
private int hour;
private int minute;
private int second;
public MyTime(int hour,int minute,int second){
this.hour=hour;
this.minute=minute;
this.second=second;
}
public void addSecond(int sec){
int sum=sec+second;
if(sum>60){
minute+=(sum/60);
if(minute>60){
hour+=(minute/60);
minute=sum%60;}
second=sum%60;
}else {
second+=sec;
}
}
public void addMinute(int min){
int sum=min+minute;
if(sum>60){
hour+=(sum/60);
minute=sum%60;
}else {
minute+=min;
}
}
public void addHour(int hou){
hour+=hou;
}
public void subSecond(int sec){
int sum=second-sec;
if(sum<0){
minute-=(sum/60);
if(minute<0){
hour-=((-(minute/60))+1);
minute=60+(sum%60);}
second=60+(sum%60);
}
else {
second-=sec;
}
}
public void subMinute(int min){
int sum=minute-min;
if(sum<0){
hour-=((-(sum/60))+1);
minute=60+(sum%60);
}else {
minute-=min;
}
}
public void subHour(int hou){
hour-=hou;
}
public void diaplay(){
System.out.println(hour+"时"+minute+"分"+second+"秒");
}
}
MyTimeTest类
public class MyTimeTest {
public static void main(String[] args) {
MyTime time1=new MyTime(19,33,45);
time1.addSecond(30);
time1.addMinute(25);
time1.addHour(6);
time1.diaplay();
time1.subSecond(26);
time1.subMinute(78);
time1.subHour(3);
time1.diaplay();
}
}
3.构造方法:
编写Java程序,用于显示人的姓名和年龄。定义一个人类(Person), 该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造 方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年 龄打印出来。
和 4.get方法和set方法 定义一个类,该类有一个私有成员变量,通过构造方法将其进行赋初 值,并提供该成员的getXXX()和setXXX()方法
Person类
public class Person {
private String name;
private int 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 Person(String name,int age){
this.age=age;
this.name=name;
}
public void display(){
System.out.println("名字:"+name+"\n年龄:"+age);
}
}
PersonTest类
public class PersonTest {
public static void main(String[] args) {
Person people=new Person("袁金",23);
people.display();
people.setName("万志康");
people.setAge(22);
System.out.println(people.getName());
System.out.println(people.getAge());
people.display();
}
}
5.构造方法与重载
建立一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性。并通过 不同的构造方法创建事例。 至少要求:汽车能够加速,减速,停车。 要求:命名规范,代码体现层次,有友好的操作提示。
Car类
public class Car {
public int luantai=4;
public String color="brack";
public int size=1500;
public int speed=120;
public int num=1;
public Car(){
}
public Car(String color,int size){
num=2;
luantai=8;
this.color=color;
this.size=size;
}
public void speedUp(int a){
if(num==1){
System.out.println("小宝马加速慢");
}
else {
System.out.println("大奔加速快");
}
speed+=a;
}
public void speedDown(int b){
if(num==1){
System.out.println("小宝马减速慢");
}
else {
System.out.println("大奔减速快");
}
speed-=b;
}
public void show(){
if(num==1){
System.out.println("小宝马:"+color+"色"+luantai+
"轮"+size+"kg"+speed+"km");
}
else {
System.out.println("大奔:"+color+"色"+luantai+
"轮"+size+"kg"+speed+"km");
}
}
}
CarTest类
public class CarTest {
public static void main(String[] args) {
Car baoma=new Car();
Car daben=new Car("yellow",2500);
baoma.speedUp(10);
daben.speedUp(20);
baoma.show();
daben.show();
}}
6.Static关键字与普通变量的区别: 创建一个名称为StaticDemo的类,并声明一个静态变量和一个普通变 量。对变量分别赋予10和5的初始值。在main()方法中输出变量值。
StaticDemo类
public class StaticDemo {
public int num=10;
public static int num2=5;
public void show(){
System.out.println("非静态方法");
System.out.println(num);
System.out.println(num2);
}
public static void show1(){
//System.out.println(num);会报错
System.out.println("静态方法");
System.out.println(num2);
}
}
CarTest类
public class StaticDemoTest {
public static void main(String[] args) {
System.out.println(new StaticDemo().num);
System.out.println(StaticDemo.num2);
new StaticDemo().show();
StaticDemo.show1();
}
}