⭐️前言⭐️
本篇文章主要介绍JavaSE中一些不是很常见的知识点,但也会涉及,需要了解一下
博客主页: 【如风暖阳】
精品Java专栏【JavaSE】、【Java数据结构】、【备战蓝桥】、【JavaEE初阶】
欢迎点赞 收藏 ⭐留言评论 私信必回哟本文由 【如风暖阳】 原创,首发于 CSDN
博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言
博客中涉及源码及博主日常练习代码均已上传码云(gitee)
假设学生类中有姓名、分数、年龄、班级等属性,但这两个同学都在同一个班级里。
在Student类中定义的成员变量,每个对象中都会包含一份(称之为实例变量),因为需要使用这些信息来描述具体的学生。而现在要表示学生上课的教室,这个教室的属性并不需要每个学生对象中都存储一份,而是需要让所有的学生来共享。
class Student {
String name;
double score;
int age;
static String classes="1";
public Student(String name, double score, int age) {
this.name = name;
this.score = score;
this.age = age;
}
}
public class Demo1 {
public static void main(String[] args) {
Student s1=new Student("小明",88.0,18);
Student s2=new Student("小红",89.2,19);
}
}
在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对象,是所有对象所共享的。
【静态成员变量特性】
class Student {
//......
public static void staticFunc() {
System.out.println("这是一个静态方法!");
}
}
public class Demo1 {
public static void main(String[] args) {
Student.staticFunc();
}
}
//这是一个静态方法!
【静态方法特性】
注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。
class Student {
String name;
double score;
int age;
static String classes="1";
//.....
}
使用 {}
定义的一段代码称为代码块。根据代码块定义的位置以及关键字,又可分为以下四种:
class Student {
String name;
double score;
int age;
static String classes="1";
public Student(String name, double score, int age) {
this.name = name;
this.score = score;
this.age = age;
System.out.println("构造方法!");
}
static {
classes="2";
System.out.println("静态代码块!");
}
{
this.age=20;
System.out.println("实例代码块!");
}
}
public class Demo1 {
public static void main(String[] args) {
Student s1=new Student("小明",91.2,19);
System.out.println("===================");
Student s2=new Student("小王",90,19);
{
System.out.println("本地代码块!");
}
}
}
//
静态代码块!
实例代码块!
构造方法!
===================
实例代码块!
构造方法!
本地代码块!
本地代码块:定义在方法中的代码块(比较少用)
实例代码块:定义在类中的代码块(不加修饰符)。一般用于初始化实例成员变量。
静态代码块:使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。
注意事项:
class Student {
String name;
double score;
int age;
static String classes="1";
public Student(String name, double score, int age) {
this.name = name;
this.score = score;
this.age = age;
System.out.println("构造方法!");
}
static {
classes="2";
System.out.println("静态代码块!");
}
{
this.age=20;
System.out.println("实例代码块!");
}
}
public class Demo1 {
public static void main(String[] args) {
System.out.println(Student.classes);
}
}
//
静态代码块!
2
静态的只会执行一次
⚡️最后的话⚡️
总结不易,希望uu们不要吝啬你们的哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正