四:static关键字
1、声明static属性、声明static方法
一个类中的属性,通常情况下为成员属性,即使,实例化一个对象,这个对象所具有的基本属性,若要修改属性的值,只能修改该对象的属性值,不能修改其他对象的该属性值。所以,对于类中的公共属性且具有固定值,我们可以用static来修饰该属性,即表示该属性存放在公共区域,不用实例化对象就可以调用,修改该属性的值,直接使用 类.属性名 即可修改所有对象的该属性值。
static关键字可以用来定义属性和方法。
定义 | 描述 | 注意 | |
定义属性 | private static String name = "张三" | 1)表示公共属性 2)不需要实例化对象就能调用:类.属性名 | static属性的值修改一次,则表示所有对象的该属性都被改变了;且不受到实例化对象的控制 |
定义方法 | public static void setName(String name){ this.name =name; } | 1)表示公共方法 2)不需要实例化对象就能调用:类.方法名() | 1)static方法与普通方法的区别在于是否实例化对象; 2)static方法只允许调用static属性或static方法 3)非static方法允许调用static属性或static方法 |
2、static应用案例
范例:编写一个程序类,这个类可以实现实例化对象个数的统计,每一次创建新的实例化对象都可以实现一个统计操作
分析:可以单独创建一个static属性,因为所有对象都共享一个static属性,那么在构造方法中可以实现数据的统计处理。
package cn.demos;class Book {private String title;private static int count = 0;public Book(String title) {this.title = title;count++;System.out.println("第" + count + "本" + "图书的创建");}}public class Demo2 {public static void main(String arg[]) {new Book("JAVA");new Book("JSP");new Book("SPRING");}}
结果 | 第1本图书的创建 第2本图书的创建 第3本图书的创建 |
范例:实现属性的自动命名处理
分析:即如果传递了title属性,就是使用传递的值,而没有传递值,则使用”no-title-编号“进行该属性内容的定义。
package cn.demos;class Book {private String title;private static int count = 0;public Book() {this("NOTITLE - " + count++);}public Book(String title) {this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}}public class Demo2 {public static void main(String arg[]) {System.out.println(new Book("Java").getTitle());System.out.println(new Book("JSP").getTitle());System.out.println(new Book("Spring").getTitle());System.out.println(new Book().getTitle());System.out.println(new Book().getTitle());}}
结果 | Java JSP Spring NOTITLE - 0 NOTITLE - 1 |
这样设置的好处在于,没有设置title属性时内容为null的重复问题。
四:static关键字
1、声明static属性、声明static方法
一个类中的属性,通常情况下为成员属性,即使,实例化一个对象,这个对象所具有的基本属性,若要修改属性的值,只能修改该对象的属性值,不能修改其他对象的该属性值。所以,对于类中的公共属性且具有固定值,我们可以用static来修饰该属性,即表示该属性存放在公共区域,不用实例化对象就可以调用,修改该属性的值,直接使用 类.属性名 即可修改所有对象的该属性值。
static关键字可以用来定义属性和方法。
定义 | 描述 | 注意 | |
定义属性 | private static String name = "张三" | 1)表示公共属性 2)不需要实例化对象就能调用:类.属性名 | static属性的值修改一次,则表示所有对象的该属性都被改变了;且不受到实例化对象的控制 |
定义方法 | public static void setName(String name){ this.name =name; } | 1)表示公共方法 2)不需要实例化对象就能调用:类.方法名() | 1)static方法与普通方法的区别在于是否实例化对象; 2)static方法只允许调用static属性或static方法 3)非static方法允许调用static属性或static方法 |
2、static应用案例
范例:编写一个程序类,这个类可以实现实例化对象个数的统计,每一次创建新的实例化对象都可以实现一个统计操作
分析:可以单独创建一个static属性,因为所有对象都共享一个static属性,那么在构造方法中可以实现数据的统计处理。
package cn.demos;class Book {private String title;private static int count = 0;public Book(String title) {this.title = title;count++;System.out.println("第" + count + "本" + "图书的创建");}}public class Demo2 {public static void main(String arg[]) {new Book("JAVA");new Book("JSP");new Book("SPRING");}}
结果 | 第1本图书的创建 第2本图书的创建 第3本图书的创建 |
范例:实现属性的自动命名处理
分析:即如果传递了title属性,就是使用传递的值,而没有传递值,则使用”no-title-编号“进行该属性内容的定义。
package cn.demos;class Book {private String title;private static int count = 0;public Book() {this("NOTITLE - " + count++);}public Book(String title) {this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}}public class Demo2 {public static void main(String arg[]) {System.out.println(new Book("Java").getTitle());System.out.println(new Book("JSP").getTitle());System.out.println(new Book("Spring").getTitle());System.out.println(new Book().getTitle());System.out.println(new Book().getTitle());}}
结果 | Java JSP Spring NOTITLE - 0 NOTITLE - 1 |
这样设置的好处在于,没有设置title属性时内容为null的重复问题。