package dog;

public class PersonAndDog {

    public static void main(String[] args)
{
Dogs da_huang = new Dogs(12,"da_huang");
     
     //共同引用da_huang这条狗
person p1 = new person(12,"李明",da_huang);
person p2 = new person(13,"jack",da_huang);
p1.get_info();
p2.get_info();
  
} } class Dogs
{
private int age;
private String name; public Dogs(int age ,String name)
{
this.age = age;
this.name = name;
} public String get_name()
{
System.out.println("The dog is named"+this.name);
return this.name;
} } class person
{
int age;
String name;
Dogs dog;
public person(int age ,String name, Dogs dog)
{
this.age = age;
this.name = name;
this.dog = dog;
} public void get_info()
{
System.out.println("我的名字叫"+this.name+",我今年"+this.age+",岁。我的狗叫"+this.dog.get_name());
}
}

this主要用来区分不同的对象,他们的成员属性的。

this属于一个对象,不属于一个类。

区分成员变量和局部变量

代表当前对象

构造器与构造器之间的调用

static的使用

静态变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

定义语法:
访问修饰符 static 数据类型 变量名;

如何访问类变量
类名.静态变量名 或者 对象名.静态变量名

package dog;

public class Static {
public static void main(String[] args)
{
Child c1 = new Child("竹子");
c1.add();
Child c2 = new Child("花花");
c2.add();
Child c3 = new Child("草草");
c3.add(); //count 是静态变量,因此可以被任何一个对象访问
System.out.println("孩子人数为="+c3.count);
} } class Child
{
String name;
static int count; //count 是静态变量,因此可以被任何一个对象访问 public Child(String name)
{
this.name = name;
} public void add()
{
System.out.println(this.name+"加入到游戏中了!");
count++;
}
}
public class Demo3_2 {
static int i =1;
static
{
//该静态区域块,只被执行一次
System.out.println("静态代码区");
i ++;
} public Demo3_2()
{
System.out.println("构造函数");
i++;
}
public static void main(String []args)
{
Demo3_2 t1 = new Demo3_2();
System.out.println(t1.i); // Demo3_2 t2 = new Demo3_2();
System.out.println(t2.i); //
System.out.println(Demo3_2.i);
} }
//注意一点,即使不创建新的对象。静态代码区域块的也会被执行,且执行一次
package dog;

public class Demo3_3 {
public static void main(String []args)
{
Stu s1= new Stu(12,"王二",4550); Stu s2 = new Stu(13, "len",5000);
System.out.println(Stu.get_count()); //这里直接使用的是类名.类方法名的形式
} } class Stu
{
int age;
String name;
int xuefei;
static int count; public Stu(int age, String name, int xuefei)
{
this.age = age;
this.name=name;
this.xuefei=xuefei;
count += xuefei;
} public static int get_count()
{
//静态方法(类方法),是属于对象实例的,形式如下:
//访问修饰符 static 数据返回类型 方法名(){}
//注意: 静态方法(类方法)中不能访问非静态变量(类变量)
//使用: 类名.静态方法名 或者 对象名.静态方法名
return count;
}
}

静态变量

加上static称为类变量或静态变量,否则称为实例变量

静态变量是与类相关的,公共的属性

实例变量属于每个对象个体的属性

静态变量可以通过    类名.静态变量名   直接访问

静态方法
静态方法属于与类相关的,公共的方法。

实例方法属于每个对象个体的方法。

静态方法可以通过   类名.静态方法名 直接访问

java===java基础学习(13)---this,static(静态变量和静态方法)的使用的更多相关文章

  1. 《Java基础知识》Java static关键字以及Java静态变量和静态方法

    static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...

  2. Java入门基础学习,成为一个Java程序员的必备知识

    引言 众所周知,Java是一种面向对象的编程语言.您可以在Windows操作系统上编写Java源代码,而在Linux操作系统上运行编译后的字节码,而无需修改源代码. 数据类型 Java 有 2 种数据 ...

  3. Java【基础学习】之暴力求素数【用数组返回】

    Java[基础学习]之暴力求素数[用数组返回] */ import java.util.*; public class Main{ public static void main(String[] a ...

  4. Java知多少(31)static关键字以及Java静态变量和静态方法

    static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...

  5. JAVA的静态变量、静态方法、静态类

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  6. 转载:JAVA的静态变量、静态方法、静态类

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  7. java静态变量、静态方法和静态代码段

    先上实例 public class TestStatic { public static String staticString = "this is a static String&quo ...

  8. 谈谈java中静态变量与静态方法在有继承关系的两个类中调用

    谈谈java中静态变量与静态方法在有继承关系的两个类中调用 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量和静态方法在有继承关系的两个类中的问题测试 ...

  9. 【转】JAVA的静态变量、静态方法、静态类

    转自:http://blog.csdn.net/zhandoushi1982/article/details/8453522/ 静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. ( ...

  10. Java中的静态变量、静态方法问题

    由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员 1.静态方法 无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而 ...

随机推荐

  1. 命名空间(namespace)// 友元函数

    17.2.命名空间 命名空间(namespace)为防止名字冲突提供了更加可控的机制.命名空间能够划分全局命名空间,这样使用独立开发的库更加容易了.一个命名空间就是一个作用域,通过在命名空间内部定义库 ...

  2. iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的iOS程序.但是这里我想强调一下,前面的 ...

  3. Go语言【第二篇】:Go语法和数据类型

    Go语言基础语法 Go标记 Go程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号.如以下Go语句由6个标记组成: fmt.PrintIn("Hello, World!&quo ...

  4. BZOJ4754 & 洛谷4323 & LOJ2072:[JSOI2016]独特的树叶——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4754 https://www.luogu.org/problemnew/show/P4323 ht ...

  5. 项目管理---git----快速使用git笔记(二)------git的本地安装

    下载安装包 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://git- ...

  6. bzoj 1150&2151&2288(双向链表+堆)(贪心)

    经典模型:在n个点中选k个点,要求两两不相邻,且总权值最大/最小. 做法:用双向链表串起来,把所有点丢进堆里,选择一个点的时候把它左右两个点从双向链表和堆中去除,然后把这个点的权值加进ans,出堆后改 ...

  7. 【learning】杜教筛求欧拉函数前缀和

    我们考虑利用\(\sum\limits_{d|n}\varphi(d)=n\)这一性质来处理这个问题 设\(f(n)=\sum\limits_{i=1}^{n}\varphi(i)\) 那么我们可以得 ...

  8. #define与typedef

    #define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了. typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名), ...

  9. bzoj1529 [POI2005]ska Piggy banks 并查集

    [POI2005]ska Piggy banks Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1508  Solved: 763[Submit][Sta ...

  10. bzoj 3714 [PA2014]Kuglarz 最小生成树

    [PA2014]Kuglarz Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1335  Solved: 672[Submit][Status][Di ...