【this】
指的是明确的标记本类的结构
当前正在调用类中方法的对象,不是一个固定的
java中以“{}”为界限。如果现在属性名称和参数名称重名,那么默认情况下,如果没有加任何的限制,指的是最近的“{}”内的变量名称。
在这种情况下明确找到要访问的变量属于类中的属性的时候,需要在变量前加this,这样就可以准确的进行属性的标记
1.★★在以后的程序中,只要访问类中的属性,前面必须加“this”★★
范例:
public class Book {
private String title;
private double price; public Book(String title,double price){
/*同名的属性,指的都是系统默认值*/
title = title;
price = price;
/*this.属性,后面是传入的参数*/
this.title = title;
this.price = price;
} public String getInfo(){
return "书名" + this.title + ",价格" + this.price;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public static void main(String[] args) {
Book book = new Book("java",89.5);
System.out.println(book.getInfo());
}
} 调用方法:普通方法,构造方法
构造方法之间进行互相调用,形式this.(参数,参数)
2.★严谨地,调用本类方法,一定加上this★
注意:1.this 一定要放在构造方法首行,也尽量放在普通方法首行
2.类中构造方法间的弧线调用,一定要保留出口
即,this 互调构造方法时,一定要至少保留一个构造方法没有使用this调用其他构造方法
范例:
public class Emp {
private int empno;
private String ename;
private double sal;
private String dept; //构造函数可以快捷生成(source)
public Emp(){
this(0,"无名氏",0.0,"未定");
} public Emp(int empno){
this(empno, "临时工", 800, "后勤部");
} public Emp(int empno,String ename){
this(empno, ename, 2000, "技术部");
}
/*保留了一个(构造方法)的出口*/
public Emp(int empno,String ename,double sal,String dept){
this.empno = empno;
this.ename = ename;
this.sal = sal;
this.dept = dept;
} public void print(){
System.out.println("**************************");
} public String getInfo(){
this.print(); //调用本类的方法
return "雇员编号:" + this.empno + ",\t姓名:" + this.ename + ",\t工资:" + this.sal + ",\t部门:" + this.dept;
} public static void main(String[] args) {
Emp emp = new Emp();
Emp emp2 = new Emp(1);
Emp emp3 = new Emp(2, "李四");
Emp emp4 = new Emp(3, "张三", 1000.8, "行政部");
System.out.println(emp.getInfo());
System.out.println(emp2.getInfo());
System.out.println(emp3.getInfo());
System.out.println(emp4.getInfo()); }
} 【static】
★★编写类时,很少用到★★,除非类中只有方法,这时可以把该方法定义为静态方法
类.静态属性
类.静态方法
1.属性
范例:
public class Book {
private String title;
private double price; static String pub = "清华大学出版社"; public Book(String title,double price){
this.title = title;
this.price = price;
} public void print(){
System.out.println("********************");
} public String getInfo1(){
this.print(); //调用本类方法
return "书名:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public static void main(String[] args) {
Book book1 = new Book("java",89.5);
Book book2 = new Book("Android",12);
Book book3 = new Book("Oracle",20);
/*静态属性,只要一个对象修改了属性的内容,所有对象的static属性的内容就都将一起改变*/
//book1.pub = "北京大学出版社";
Book.pub = "北京大学出版社";
System.out.println(book1.getInfo1());
System.out.println(book2.getInfo1());
System.out.println(book3.getInfo1());
}
} 2.方法
范例:
package march_21; public class Book {
private String title;
private double price; static String pub = "清华大学出版社"; public Book(String title,double price){
this.title = title;
this.price = price;
}
/*静态方法*/
public static void setPub(String p){
pub = p;//this不能点静态属性
} public void print(){
System.out.println("********************");
} public String getInfo1(){
this.print(); //调用本类方法
return "书名:" + this.title + ",价格:" + this.price + ",出版社:" + this.pub;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public static void main(String[] args) {
/*没实例化对象,也可以利用类名直接调用*/
Book.setPub("北京大学出版社"); Book book1 = new Book("java",89.5);
Book book2 = new Book("Android",12);
Book book3 = new Book("Oracle",20);
System.out.println(book1.getInfo1());
System.out.println(book2.getInfo1());
System.out.println(book3.getInfo1());
}
} ★static可以不new,直接调用;非static一定要new,才能调用★
1.static方法不能直接访问非static属性或者方法,只能调用static属性或方法
2.非static方法可以调用static的属性或方法,不受限制 main函数中String[] args:程序运行的时候传递的参数,形式:TestDemo 参数 参数 参数
如果参数本身有空格,形式:TestDemo "Hello World" "Hello MLDN" 功能一:实现类实例化对象个数的统计
希望每当实例化一个类对象的时候都可以打印一个信息:产生的第x个实例化对象。
因为只要是新的实例化对象产生了,那么一定会去调用类中的构造方法,
所以可以在构造方法里面增加一个统计数据的操作,每当新对象产生之后统计的内容就自增一个。
范例:
public class BookStatic {
private static int num = 0; public BookStatic(){
num ++;
System.out.println("这是第" + num + "个产生的对象");
} public static void main(String[] args) {
new BookStatic();new BookStatic();new BookStatic();
new BookStatic();new BookStatic();new BookStatic();
}
} 功能二:实现属性的自动设置
例如,现在某一个类有一个无参构造方法,一个有参构造方法,有参构造主要的目的是传递一个title属性,
但是希望不管调用的是无参的还是有参的构造,都可以为title设置内容(尽量不使用重复的内容设置)。
范例:
public class BookStatic {
private static int num = 0;
private String title; public BookStatic(){
this("NOTITLE -- " + num++);
// num++;
} public BookStatic(String title) {
this.title = title;
} public String getTitle(){
return this.title;
} public static void main(String[] args) {
System.out.println(new BookStatic("java").getTitle());
System.out.println(new BookStatic().getTitle());
System.out.println(new BookStatic().getTitle());
}
} /*执行先后顺序:静态块>静态代码>静态的构造方法*/
public class StaticDemo {
public StaticDemo(){
System.out.println("静态的构造方法");
} //数据库用的比较多
{
System.out.println("这是静态代码");
}
/*程序运行前,加载进去的,不管有么有实例化对象*/
static{
System.out.println("这是静态块");
} public static void main(String[] args) {
StaticDemo staticDemo = new StaticDemo();
}
}

this和static的更多相关文章

  1. static,你还敢用吗?(二)

    为了压系统,昨天小组在测试环境模拟了一大批订单数据.今天上午查看记录的账单计息日志,发现了一大堆的MySqlException MySql.Data.MySqlClient.MySqlExceptio ...

  2. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  3. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  4. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

  5. static,你还敢用吗?

    我用火狐的HttpRequester测试开发组里一个同学发布的Web API接口,遇到了一个奇怪的问题. 我测试边界情况时,第一次调用响应的结果是正常的,但当再次及以后的请求时,却返回了异常“Syst ...

  6. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  7. Android 中关于static的使用问题

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5251564.html 项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错.初步排除了oom ...

  8. iOS: 在UIViewController 中添加Static UITableView

    如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...

  9. 浅谈Static关键字

    1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...

  10. 今天思考一个问题,PHP const和static的区别

    static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心 ...

随机推荐

  1. 【python测试开发栈】帮你总结python random模块高频使用方法

    随机数据在平时写python脚本时会经常被用到,比如随机生成0和1来控制逻辑.或者从列表中随机选择一个元素(其实抽奖程序也类似,就是从公司所有人中随机选择中奖用户)等等.这篇文章,就帮大家整理在pyt ...

  2. java基础之----非空判断

    大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...

  3. 【转】经典的SQL语句面试题

    Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表 问题: 1 ...

  4. 【转】在NetBeans上搭建Android SDK环境

    本文将介绍在NetBeans 6.8上搭建Android SDK环境,目前Android在Netbeans上进行开发需要借助nbandroid的平台插件. 我们刚刚介绍过<MyEclipse上搭 ...

  5. 多态(C++)

    #include <iostream> using namespace std; class HeroFighter { public: virtual int power() { ; } ...

  6. 浏览器从输入url 到页面展示完成响应过程

    用户从输入 url 到浏览器响应,呈现给用户的具体过程 1.用户在输入栏输入地址 (1) 如果有 beforeunload 事件会先执行判断继续还是跳出操作 (2) 浏览器进程识别是 地址还是关键字检 ...

  7. java.sql.SQLException: connection holder is null 问题处理

    问题描述 上上个周测试的时候突然报系统异常,于是我立即查看日志,发现是一个数据库异常:java.sql.SQLException: connection holder is null我第一想到的就是可 ...

  8. 位运算上的小技巧 - AtCoder

    Problem Statement There is an integer sequence of length 2N: A0,A1,…,A2N−1. (Note that the sequence ...

  9. 关于在读取excel的文件时候,放在服务器上就报路径错误

    就是指定这个路径:C:\Program Files (x86)\IIS Express 因为在上传到服务器的时候,服务器读取的是在服务器上的路径,所以正确的思路应该是 把上传的Excel存在服务器上, ...

  10. JavaScript(1)---绑定事件、解除绑定事件

    JavaScript(1)---绑定事件.解除绑定事件 一.事件概述 1.事件的几个概念 · 事件 指的是文档或者浏览器窗口中发生的一些特定交互瞬间.我们可以通过侦听器(或者处理程序)来预定事件,以便 ...