java===java基础学习(13)---this,static(静态变量和静态方法)的使用
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(静态变量和静态方法)的使用的更多相关文章
- 《Java基础知识》Java static关键字以及Java静态变量和静态方法
static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...
- Java入门基础学习,成为一个Java程序员的必备知识
引言 众所周知,Java是一种面向对象的编程语言.您可以在Windows操作系统上编写Java源代码,而在Linux操作系统上运行编译后的字节码,而无需修改源代码. 数据类型 Java 有 2 种数据 ...
- Java【基础学习】之暴力求素数【用数组返回】
Java[基础学习]之暴力求素数[用数组返回] */ import java.util.*; public class Main{ public static void main(String[] a ...
- Java知多少(31)static关键字以及Java静态变量和静态方法
static 修饰符能够与变量.方法一起使用,表示是“静态”的. 静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法.静态 ...
- JAVA的静态变量、静态方法、静态类
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象 ...
- 转载:JAVA的静态变量、静态方法、静态类
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象 ...
- java静态变量、静态方法和静态代码段
先上实例 public class TestStatic { public static String staticString = "this is a static String&quo ...
- 谈谈java中静态变量与静态方法在有继承关系的两个类中调用
谈谈java中静态变量与静态方法在有继承关系的两个类中调用 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量和静态方法在有继承关系的两个类中的问题测试 ...
- 【转】JAVA的静态变量、静态方法、静态类
转自:http://blog.csdn.net/zhandoushi1982/article/details/8453522/ 静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. ( ...
- Java中的静态变量、静态方法问题
由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员 1.静态方法 无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而 ...
随机推荐
- 【】Python】异常处理try...except、raise
一.try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止.例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: 1 2 3 4 a=10 b= ...
- Activiti5工作流笔记四
排他网关(ExclusiveGateWay) 流程图 部署流程定义+启动流程实例 查询我的个人任务 完成我的个人任务 并行网关(parallelGateWay) 流程图 部署流程定义+启动流程实例 查 ...
- 【hdu4507】吉哥系列故事——恨7不成妻 数位dp
题目描述 求 $[L,R]$ 内满足:数位中不包含7.数位之和不是7的倍数.本身不是7的倍数 的所有数的平方和 mod $10^9+7$ . 输入 输入数据的第一行是case数T(1 <= T ...
- 【bzoj2190】[SDOI2008]仪仗队 欧拉函数
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 【题解】Atcoder ARC#85 E-MUL
……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 ...
- bzoj 1037: [ZJOI2008]生日聚会Party (dp)
dp,但是要顺推容易点 const mm=; var f:..,..,..,..]of longint; n,m,kk,now,sum,i,j,k1,k2:longint; function max( ...
- BZOJ5300:[CQOI2018]九连环——题解
一种打表的方法,适用于知道如何解九连环的人. 我们知道,解九(n)连环必须先解第九(n)环,然后解八(n-1).七(n-2)-- 根据这个我们飞快的写出了一个递推式,设\(f[i]\)为\(i\)连环 ...
- C++中的显示类型转换
本文参考了<C++ Primer(中文 第5版)>.<王道程序员求职宝典>以及网上相关博客,结合自己的理解写成.个人水平有限,若有错误欢迎指出. C++中显示转换也成为强制类型 ...
- std::string::find() 和 std::string::npos
npos是一个常数,用来表示不存在的位置,string::npos代表字符串到头了结束了. int idx = str.find("abc");if (idx == strin ...
- ACM1881 01背包问题应用
01背包问题动态规划应用 acm1881毕业bg 将必须离开的时间限制看作背包容量,先将他们由小到大排序,然后在排完序的数组中对每个实例都从它的时间限制开始(背包容量)到它的延长时间进行遍历: #in ...