類(lèi)與對(duì)象的關(guān)系
類(lèi)是構(gòu)建對(duì)象的模板,一個(gè)類(lèi)可以構(gòu)建多個(gè)對(duì)象。
類(lèi)在方法區(qū)當(dāng)中,對(duì)象在堆中。
static修飾的變量是獨(dú)屬于類(lèi)的變量,沒(méi)有給對(duì)象。
public class Person {
private String name;
private int age;
private static String like;
public static void main(String[] args) {
Person zhang = new Person();
zhang.name = "zhangsan";
zhang.age = 18;
zhang.like = "apple";
Person li = new Person();
li.name = "lisi";
li.age = 20;
li.like = "banana";
System.out.println(zhang.name+" "+zhang.age+" "+zhang.like);
System.out.println(li.name+" "+li.age+" "+li.like);
}
}

?static修飾的變量究竟儲(chǔ)存在什么地方
在方法區(qū)當(dāng)中有靜態(tài)常量池,static修飾的變量被放在靜態(tài)常量池中,如果靜態(tài)常量池已滿(mǎn)則被存儲(chǔ)在方法區(qū)當(dāng)中,總之,不可能在對(duì)象中進(jìn)行存儲(chǔ)。
static能修飾什么
static能修飾變量、修飾方法、修飾代碼塊。
① static修飾的變量屬于類(lèi)變量,被創(chuàng)建出來(lái)的所有對(duì)象共享。
② static修飾的方法屬于類(lèi),叫做靜態(tài)方法,沒(méi)有被static修飾的方法屬于對(duì)象。
在靜態(tài)方法當(dāng)中不能調(diào)用非靜態(tài)方法,因?yàn)?strong>有類(lèi)不一定有對(duì)象;非靜態(tài)方法能調(diào)用靜態(tài)方法,因?yàn)橛袑?duì)象一定有類(lèi)。
③ 被static修飾的代碼塊不論放在哪里,都一定比main方法優(yōu)先執(zhí)行。(用于優(yōu)化程序)
Person person = new Person();
Person:決定著對(duì)象的類(lèi)型。
person:對(duì)象的名稱(chēng),存儲(chǔ)在棧內(nèi)存當(dāng)中。
new:關(guān)鍵字,在堆內(nèi)存當(dāng)中開(kāi)辟內(nèi)存空間(對(duì)象)。
Person():構(gòu)造器,給對(duì)象賦初始值。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-852484.html
public class Person {
static {
System.out.println("我是main方法之前的static修飾的代碼塊");
}
{
System.out.println("我是main方法之前的代碼塊");
}
public static void main(String[] args) {
System.out.println("我是main方法");
}
static {
System.out.println("我是main方法之后的static修飾的代碼塊");
}
{
System.out.println("我是main方法之后的代碼塊");
}
}

由于在 main方法中并沒(méi)有創(chuàng)建Person類(lèi)的實(shí)例,因此非靜態(tài)代碼塊(實(shí)例初始化塊)并不會(huì)在程序執(zhí)行時(shí)被觸發(fā)。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-852484.html
public class Person {
static {
System.out.println("我是main方法之前的static修飾的代碼塊");
}
{
System.out.println("我是main方法之前的代碼塊");
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("我是main方法");
}
static {
System.out.println("我是main方法之后的static修飾的代碼塊");
}
{
System.out.println("我是main方法之后的代碼塊");
}
}

public class Person {
static {
System.out.println("我是main方法之前的static修飾的代碼塊");
}
{
System.out.println("我是main方法之前的代碼塊");
}
public static void main(String[] args) {
System.out.println("我是main方法");
Person person = new Person();
}
static {
System.out.println("我是main方法之后的static修飾的代碼塊");
}
{
System.out.println("我是main方法之后的代碼塊");
}
}

到了這里,關(guān)于【java】static關(guān)鍵字的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!