- 浏览: 73957 次
- 性别:
- 来自: 天津
文章分类
最新评论
----this和static关键字
public class Car
{
//属性,
static String brand="红旗";
String color;
double price;
public Car(String brand,String color,double price)
{
this(color,price);
this.brand=brand;
}
public Car(String color,double price)
{
this.color=color;
this.price=price;
}
public void show()
{
System.out.println("品牌:"+Car.brand+" 颜色:"+this.color+" 价格:"+this.price);
}
public void show1()
{
System.out.println(颜色:"+this.color+" 价格:"+this.price);
}
public static void speed()
{
//this.name这是错的,静态的方法中不能调用非静态的东西,而非静态的方法里能调用静态的东西。
System.out.println(brand+"在加速,准备飞起来....");
}
public static void main(String[] args)
{
/*
Car qq = new Car("大众","白色",8000);//main方法也是静态方法,不能调用非静态的成员,但是这里不是调用非静态的成员,是创建了一个非静态的成员。
//比如在静态变量里放的brand属性,是在共享区创建了brand属性。归根结底,我是在共享区中的一个方法(main)中创建,共享区的这个方法中使用,我没出这个方法(main)以外的地方
qq.show();
qq.speed();
Car pst = new Car("黑色",40000);
pst.show();
pst.show1();
pst.speed();
**/
//这两个是类调用,把上面代码注销是为了验证类调用不用new对象,直接使用类名就行。类调用,调用的肯定是静态成员
Car.speed();//类调用静态方法
System.out.println(brand);//等价于System.out.println(Car.brand);类调用静态属性
}
}
-------------------------------------------
总结:
1.用static修饰的属性和方法,都会放在数据共享区,是在程序编译的时候进入数据共享区的。静态变量用类名.变量调用
2.当程序中属性用private修饰的时候,外界的类不能this.属性了,因为属性被那个类私有化了,但是那个类设置了公共的get、set
方法,因此外界类可以this.get方法
3.共享跟封装是对立的,因为封装是只能自己用。封装是把自己的属性和方法放在自己的对象里,用到this关键字(只是平时我们不写this关键字);
this关键字是指对一个数据的,因此this关键字不能放在共享区
4.public Car(String brand,String color,double price)的含义:
1.后面的参数实际上就是在调用带有三个参数的构造方法。
2. 写String brand是在数据共享区开辟了空间(因为他有static),写String color和double price是在堆内存中开辟了空间
3.其实写String color和double price就是在写this.color=color(set方法),这里用到了this关键字;而写static String brand其实是在写Car.brand(类.属性),这里是因为brand用到了static关键字。因为这两个关键字的用法不同,因此写String brand时候在数据共享区开辟了空间,写String color,double price的时候在堆内存开辟了空间。
5.public static void main(String[] args)
{
//1.这句话打印出:大众,白色,8000
Car qq1 = new Car("大众","白色",8000);
//2. 打印出大众,白色,40000,因为brand被共享了,第一次在上面用到了,所以第一次之后brand里面的值为大众,第二次不用在写
Car qq2 = new Car("白色",40000);
//3.这时候打印宝马,红色,66666,因为此时数据共享区的值(大众)被后面的新值覆盖了。
Car qq3= new Car("宝马","红色",66666);
//4.打印宝马,白色,666666。因为这里的brand用的是数据共享区后来的新值
Car qq4 = new Car("白色",40000);
}
6.生产doc文档:cmd-->javadoc 类名.java
public class Car
{
//属性,
static String brand="红旗";
String color;
double price;
public Car(String brand,String color,double price)
{
this(color,price);
this.brand=brand;
}
public Car(String color,double price)
{
this.color=color;
this.price=price;
}
public void show()
{
System.out.println("品牌:"+Car.brand+" 颜色:"+this.color+" 价格:"+this.price);
}
public void show1()
{
System.out.println(颜色:"+this.color+" 价格:"+this.price);
}
public static void speed()
{
//this.name这是错的,静态的方法中不能调用非静态的东西,而非静态的方法里能调用静态的东西。
System.out.println(brand+"在加速,准备飞起来....");
}
public static void main(String[] args)
{
/*
Car qq = new Car("大众","白色",8000);//main方法也是静态方法,不能调用非静态的成员,但是这里不是调用非静态的成员,是创建了一个非静态的成员。
//比如在静态变量里放的brand属性,是在共享区创建了brand属性。归根结底,我是在共享区中的一个方法(main)中创建,共享区的这个方法中使用,我没出这个方法(main)以外的地方
qq.show();
qq.speed();
Car pst = new Car("黑色",40000);
pst.show();
pst.show1();
pst.speed();
**/
//这两个是类调用,把上面代码注销是为了验证类调用不用new对象,直接使用类名就行。类调用,调用的肯定是静态成员
Car.speed();//类调用静态方法
System.out.println(brand);//等价于System.out.println(Car.brand);类调用静态属性
}
}
-------------------------------------------
总结:
1.用static修饰的属性和方法,都会放在数据共享区,是在程序编译的时候进入数据共享区的。静态变量用类名.变量调用
2.当程序中属性用private修饰的时候,外界的类不能this.属性了,因为属性被那个类私有化了,但是那个类设置了公共的get、set
方法,因此外界类可以this.get方法
3.共享跟封装是对立的,因为封装是只能自己用。封装是把自己的属性和方法放在自己的对象里,用到this关键字(只是平时我们不写this关键字);
this关键字是指对一个数据的,因此this关键字不能放在共享区
4.public Car(String brand,String color,double price)的含义:
1.后面的参数实际上就是在调用带有三个参数的构造方法。
2. 写String brand是在数据共享区开辟了空间(因为他有static),写String color和double price是在堆内存中开辟了空间
3.其实写String color和double price就是在写this.color=color(set方法),这里用到了this关键字;而写static String brand其实是在写Car.brand(类.属性),这里是因为brand用到了static关键字。因为这两个关键字的用法不同,因此写String brand时候在数据共享区开辟了空间,写String color,double price的时候在堆内存开辟了空间。
5.public static void main(String[] args)
{
//1.这句话打印出:大众,白色,8000
Car qq1 = new Car("大众","白色",8000);
//2. 打印出大众,白色,40000,因为brand被共享了,第一次在上面用到了,所以第一次之后brand里面的值为大众,第二次不用在写
Car qq2 = new Car("白色",40000);
//3.这时候打印宝马,红色,66666,因为此时数据共享区的值(大众)被后面的新值覆盖了。
Car qq3= new Car("宝马","红色",66666);
//4.打印宝马,白色,666666。因为这里的brand用的是数据共享区后来的新值
Car qq4 = new Car("白色",40000);
}
6.生产doc文档:cmd-->javadoc 类名.java
- this和static关键字.zip (13.3 KB)
- 下载次数: 2
发表评论
-
二分法、冒泡排序
2017-03-03 10:31 358import java.util.Scanner;/** ... -
for、while循环,打印三角形、菱形
2017-03-03 09:54 545import java.util.Scanner;publi ... -
单线程与多线程
2016-01-16 12:10 616单线程:按照程序 ... -
字节流,字符流,对象流,序列化,持久化
2016-01-15 11:25 675第一:读写字符串 input(读文件里的内容) 的步骤: ... -
深入反射、IO文件、字节流
2016-01-15 11:11 465第一:反射相关的概念 1.反射中调用构造函数默认都是调用 ... -
百度字符串
2016-01-07 17:41 5491、length() 字符串的长度 例:char char ... -
map集合转化成list集合
2015-12-28 15:52 1669package emp; public class Emp ... -
反射
2015-12-28 15:47 421第一:反射的概念 1.(1).java程序源文件(属性和 ... -
泛型
2015-12-28 15:24 397第一:泛型:问题:1.在运算时候必须要向下转型。向下转型存 ... -
map集合和他的实现类hasHmap(不安全)和hashTable(安全)
2015-12-28 15:15 607第一:初步认识map 1.键值对(key与value是一一 ... -
set接口和它的实现类treeset和hashset
2015-12-01 22:50 538第一:set接口:set接口里面的元素不能重复,因此nul ... -
Collection集合根接口、两个子接口list和set
2015-11-30 22:29 618第一:由数组的 ... -
String与StringBuffer、Date日期与SimpleDateFormat 简单的日期格式化
2015-11-29 22:31 641第一:String类:字符串常量1.String是一个类, ... -
异常与异常类
2015-11-25 22:58 390第一.异常的概念:异常就是程序在运行中的错误,程序中的异常用异 ... -
快捷键
2015-11-24 23:06 2891.导包:ctrl+shift+O 2.找类:ctrl+shi ... -
向下转型与instanceof 关键字,object类(系统类)中的常用方法
2015-11-24 23:02 945第一:向下转型 1.向下 ... -
接口,抽象类与接口的关系。多肽、向上转型与动态绑定的引出
2015-11-23 22:04 455第一:在引入接口之前 ... -
关键字:extends继承、abstract 抽象,继承与抽象类之间的关系、final最终的
2015-11-22 17:02 854----继承 1.extends的是继承或者扩展的意思。父类写 ... -
由static引出单例模式
2015-11-22 16:20 307单例模式的特点:保证在整个应用程序中只存在一个对象 单例模式的 ... -
java内存分析
2015-11-22 15:16 2571.局部变量中的引用类型是把地址存到栈内存中,由栈内存中的地址 ...
相关推荐
- `public`, `private`, `protected`, `static`, `final`, `abstract`, `synchronized`, `volatile`, `transient`:这些关键字用于定义访问级别和修饰符。 - `try`, `catch`, `finally`, `throw`, `throws`:这些...
Java中的静态(static)关键字是面向对象编程中的一个重要概念,它允许我们定义类级别的变量和方法,而不是局限于实例级别的。本篇文章将详细讲解静态static的关键点,并结合Java的基础教学进行阐述。 1. 静态...
Java 中的关键字包括 abstract、assert、boolean、break、byte、case、catch、char、class、const、continue、default、do、double、else、enum、extends、final、finally、float、for、goto、if、implements、...
总的来说,这个Java基础入门教程涵盖了面向对象编程的基本概念,包括类、对象、构造方法、`this`关键字、垃圾回收、`static`关键字、内部类以及如何使用Java的帮助文档。通过深入学习这些内容,初学者能够逐步掌握...
### Java知识总结(五)--封装 #### 一、封装概念 ...此外,`this`和`static`关键字也是Java编程中不可或缺的部分,它们各自具有独特的特性和应用场景,熟练掌握这些基础知识对于编写高质量的Java代码至关重要。
static关键字用于声明类级别的变量和方法,这些变量和方法属于类本身,而不是类的实例。静态成员不占用每个对象的内存空间,可以直接通过类名访问。static的特性使得它可以用来创建单例模式、静态工厂方法等。 ...
* javadoc 文档注释:用于生成文档注释。 六、Java常用转义字符 * \ddd—>1-3 位八进制数所表示的字符; * \uxxxx—>1-4 位十六制数所表示的字符; * ‘ —>单引号字符; * “ —>双引号字符 ; * \\ —>双斜杠...
题目(4)中的static关键字使得方法可以在不创建类实例的情况下被调用。 7. **成员变量和局部变量**:题目(7)讨论了如何在局部作用域中引用成员变量,需要通过this关键字来访问。 8. **条件运算符(三元运算符)...
- 产生Java文档的命令是`javadoc`,用于生成API文档。 - 查询Java类型是否是Serializable类型的命令是`serialver`,检查类的序列化版本ID。 - 产生Java平安策略文件的命令是`policytool`,用于管理Java安全策略。...
- **类的设计**:包含构造函数、this关键字、static关键字、内部类,以及垃圾回收机制。 - **多态**:深入理解子类和父类之间的转换,方法的重写和重载,final关键字,抽象类和接口的使用。 3. **异常处理**: -...
4. **Java开发工具包(JDK)**:包含编译器javac.exe、解释器java.exe,以及Javadoc、jar等工具,用于文档生成和打包。 5. **Java语言基础**:与C语言相似,但更加强调面向对象。标识符定义遵循特定规则,Java的...
**static关键字**: - `static`修饰的成员属于类,不依赖于类的实例。这意味着静态变量和静态方法是所有对象共享的,可以直接通过类名访问。 **内部类**: - 内部类是定义在一个类内部的类,可以是成员内部类、局部...
16. static关键字: - A、C、D可以被static修饰,局部变量不能。 17. 内部类: - A、B、C正确,D错误(静态内部类可以定义静态和非静态成员,但非静态内部类不能定义静态成员)。 18. 单例设计模式: - A、B、C...
例如,`// This is a single line comment`是合法的单行注释,`/* This is a multi-line comment */`是多行注释,而`/** This is a Javadoc comment. */`是文件注释。 1.5 **编译与运行** 当编译Java源代码文件时...
JDK是用于开发和编译Java程序的工具集,包含JRE以及开发工具如javac编译器和javadoc文档生成工具。JRE则是运行Java应用程序所必需的环境,包含了Java虚拟机(JVM)和Java核心类库。 Java的基本语法包括数据类型,如...
- 了解反编译工具(如javap)和文档生成器(javadoc),这些工具在开发过程中非常实用。 - 理解jar文件,它是Java应用程序的打包形式。 5. **继承与接口**: - 掌握子类和父类的概念,理解继承机制。 - 学习...
3. Java类和对象:包括类的定义、对象的创建和使用,以及this关键字来引用当前对象的实例变量。 4. 数组的定义和使用:包括一维和二维数组的定义方式,以及如何访问数组元素。 5. Java的包结构和导入语句(import...