static 关键字
概述
package com.itheima.staticdemo;
public class Demo01Static {
public static void main(String[] args) {
User user = new User();
user.onlineNumber = 5;
System.out.println(User.onlineNumber);
}
}
访问注意事项
package com.itheima.staticdemo;
public class Demo02Static {
private static String name;
public static void print(){
}
public static void main(String[] args) {
print();
}
}
静态方法、变量的定义
package com.itheima.staticdemo;
public class User {
private String name;
private int age;
public static int onlineNumber;
public static void main(String[] args) {
User.onlineNumber = 10;
System.out.println(onlineNumber);
User u1 = new User();
u1.age = 10;
u1.name = "张三";
u1.onlineNumber++;
System.out.println(u1.name);
System.out.println(u1.age);
System.out.println(onlineNumber);
User u2 = new User();
u2.name = "李四";
u2.age = 30;
u2.onlineNumber++;
System.out.println(u2.name);
System.out.println(u2.age);
System.out.println(onlineNumber);
}
}
工具类
1.itheima工具类
package com.itheima.staticdemoutil;
import java.util.Random;
public class ItheimaUtil {
private ItheimaUtil() {
}
public static String createVerifyCode(int n){
String code = "";
String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
for (int i = 0; i < n; i++) {
int index = random.nextInt(s.length());
code += s.charAt(index);
}
return code;
}
}
测试itheima工具类
package com.itheima.staticdemoutil;
public class TestIthaimaUtil {
public static void main(String[] args) {
System.out.println(ItheimaUtil.createVerifyCode(4));
}
}
2.Arrays工具类
package com.itheima.staticdemoutil;
public class ArraysUtils {
private ArraysUtils(){
}
public static String toString(int[] arr){
if (arr == null){
return null;
}
String s = "[";
for (int i = 0; i < arr.length; i++) {
String ss = "";
if (i == arr.length-1){
ss = arr[i] + "]";
}else {
ss = arr[i] + ",";
}
s += ss;
}
return s;
}
public static double getAvg(int[] arr){
if (arr == null){
return -1;
}
double avg = 0;
int max = arr[0],min = arr[0],sum = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
if (arr[i]<min){
min = arr[i];
}
sum += arr[i];
}
avg = (sum-max-min)/(arr.length-2);
return avg;
}
}
测试Arrays工具类
package com.itheima.staticdemoutil;
public class TestArraysUtils {
public static void main(String[] args) {
int[] arr = {1,3,2,5};
System.out.println(ArraysUtils.toString(arr));
System.out.println(ArraysUtils.getAvg(arr));
}
}
代码块
package com.itheima.staticdemocodeblock;
import java.util.ArrayList;
public class Demo01CodeBlock {
private static String name;
private int age;
public static ArrayList<String> list = new ArrayList<>();
public Demo01CodeBlock() {
System.out.println("构造器执行了");
}
public static void main(String[] args) {
System.out.println("main方法执行了");
System.out.println(name);
System.out.println(list);
Demo01CodeBlock d1 = new Demo01CodeBlock();
}
static {
System.out.println("静态代码块触发了");
name = "张三";
list.add("a");
}
{
System.out.println("实例代码块触发了");
age = 10;
}
}
代码块案例:
package com.itheima.staticdemocodeblock;
import java.util.ArrayList;
public class Case01 {
public static ArrayList<String> list = new ArrayList<>();
static {
String[] arr1 = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] arr2 = {"♠","♥","♣","♦"};
for (int i = 0; i < arr1.length; i++) {
for (int i1 = 0; i1 < arr2.length; i1++) {
String s = arr2[i1] + arr1[i];
list.add(s);
}
}
list.add("小🃏");
list.add("大🃏");
}
public static void main(String[] args) {
System.out.println(list);
}
}
单例模式
1.饿汉单例模式
package com.itheima.staticdemosingleinstance;
public class Demo01SingleInstance {
private Demo01SingleInstance(){
}
public static Demo01SingleInstance instance = new Demo01SingleInstance();
}
2.懒汉单例模式
package com.itheima.staticdemosingleinstance;
public class Demo02SingleInstance {
private Demo02SingleInstance(){}
private static Demo02SingleInstance instance;
public static Demo02SingleInstance getInstance(){
if (instance == null){
instance = new Demo02SingleInstance();
}
return instance;
}
}
测试单例模式
package com.itheima.staticdemosingleinstance;
public class TestSingleInstance {
public static void main(String[] args) {
Demo01SingleInstance s1 = Demo01SingleInstance.instance;
Demo01SingleInstance s2 = Demo01SingleInstance.instance;
System.out.println(s1 == s2);
Demo02SingleInstance d1 = Demo02SingleInstance.getInstance();
Demo02SingleInstance d2 = Demo02SingleInstance.getInstance();
System.out.println(d1 == d2);
}
}
继承内存图
![继承内存图](https://i-blog.csdnimg.cn/blog_migrate/29a9b55a60841b545e8025db157700d8.jpeg)
继承的特点
package com.itheima.extendsdemofeature;
public class TestExtendsFeature {
public static void main(String[] args) {
Student stu = new Student();
stu.name = "张三";
System.out.println(stu.name);
}
}
class People{
public static String name;
public int age;
private void eat(){
System.out.println("干饭干饭!");
}
void run(){
System.out.println("跑");
}
public static void study(){
System.out.println("学习");
}
}
class Student extends People{
public int age;
@Override
public void run(){
System.out.println("走路");
}
public void printAge(){
int age = 10;
System.out.println(age);
System.out.println(this.age);
System.out.println(super.age);
}
}
子类构造器、this、super关键字
package com.itheima.extendsdemoconstructor;
public class TestExtendsConstructor {
public static void main(String[] args) {
Student stu1 = new Student("张三",18);
System.out.println(stu1.getAge());
System.out.println(stu1.getName());
}
}
class Student extends People {
public Student() {
}
public Student(String name){
this(name,18);
}
public Student(String name, int age) {
super(name, age);
}
}
class People {
private String name;
private int age;
public People() {
}
public People(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
练习题1
package com.itheima.exercises;
import com.itheima.exercises.domain.NewPhone;
import com.itheima.exercises.domain.Phone;
public class Exercise01 {
public static void main(String[] args) {
Phone p1 = new Phone();
p1.setBrand("诺基亚");
p1.setPrice(1000);
System.out.println("旧手机品牌:"+p1.getBrand());
System.out.println("旧手机价格:"+p1.getPrice());
System.out.println("旧手机功能:");
p1.call();
p1.sendMessage();
System.out.println("=============================================");
NewPhone p2 = new NewPhone();
p2.setBrand("苹果");
p2.setPrice(10000);
System.out.println("新手机品牌:"+p2.getBrand());
System.out.println("新手机价格:"+p2.getPrice());
System.out.println("新手机功能:");
p2.call();
p2.playGames();
p2.sendMessage();
}
}
class Phone{
private String brand;
private int price;
public void sendMessage(){
System.out.println("发短信");
}
public void call(){
System.out.println("打电话");
}
public Phone() {
}
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
class NewPhone extends Phone {
public void playGames() {
System.out.println("玩游戏");
}
}
练习题2
package com.itheima.exercises;
import com.itheima.exercises.domain.IPhone;
public class Exercise02 {
public static void main(String[] args) {
IPhone iPhone = new IPhone();
iPhone.called("123");
}
}
class IPhone extends OldPhone {
@Override
public void called(String number){
super.called(number);
System.out.println("头像:^_^");
System.out.println("归属地:北京");
}
}
class OldPhone{
private String brand;
private int price;
public OldPhone() {
}
public OldPhone(String brand, int price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
void sendMessage(){
System.out.println("发短信");
}
void call(){
System.out.println("打电话");
}
void called(String number){
System.out.println("号码"+number+"来电");
}
}
练习题3
package com.itheima.exercises;
import com.itheima.exercises.domain.Bear;
import com.itheima.exercises.domain.Panda;
public class Exercise03 {
public static void main(String[] args) {
Bear bear = new Bear();
bear.catchFish();
bear.eat();
Panda panda = new Panda();
panda.climbTree();
panda.eat();
}
}
class Bear extends Animal {
public Bear() {
super("白色", 4);
}
@Override
public void eat(){
System.out.println("北极熊吃蜂蜜");
}
public void catchFish(){
System.out.println("北极熊会抓鱼");
}
}
class Panda extends Animal{
public Panda() {
super("白色", 4);
}
@Override
public void eat(){
System.out.println("熊猫吃竹子");
}
public void climbTree(){
System.out.println("熊猫会爬树");
}
}
练习题4
测试类
package com.itheima.exercises;
import com.itheima.exercises.domain.Buyer;
import com.itheima.exercises.domain.Lecturer;
import com.itheima.exercises.domain.Maintainer;
import com.itheima.exercises.domain.Tutor;
public class Exercise04 {
public static void main(String[] args) {
Lecturer lecturer = new Lecturer(666,"乔峰");
lecturer.work();
Tutor tutor = new Tutor(668, "段誉");
tutor.work();
Maintainer maintainer = new Maintainer(686, "柳岩");
maintainer.work();
Buyer buyer = new Buyer(888, "景甜");
buyer.work();
}
}
Employee类
package com.itheima.exercises.domain;
public class Employee {
private int num;
private String name;
public void work(){}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Employee(int num, String name) {
this.num = num;
this.name = name;
}
public Employee() {
}
}
Teacher类
package com.itheima.exercises.domain;
public class Teacher extends Employee {
public Teacher(int num, String name) {
super(num, name);
}
public Teacher() {
}
}
Lecturer类
package com.itheima.exercises.domain;
public class Lecturer extends Teacher {
public Lecturer(int num, String name) {
super(num, name);
}
public Lecturer() {
}
@Override
public void work(){
System.out.println("工号为"+this.getNum()+"的讲师"+this.getName()+"在讲课");
}
}
Tutor类
package com.itheima.exercises.domain;
public class Tutor extends AdminStaff {
public Tutor(int num, String name) {
super(num, name);
}
public Tutor() {
}
@Override
public void work(){
System.out.println("工号为"+this.getNum()+"的助教"+this.getName()+"在帮助学生解决问题");
}
}
AdminStaff类
package com.itheima.exercises.domain;
public class AdminStaff extends Employee {
public AdminStaff(int num, String name) {
super(num, name);
}
public AdminStaff() {
}
}
Maintainer类
package com.itheima.exercises.domain;
public class Maintainer extends AdminStaff {
public Maintainer(int num, String name) {
super(num, name);
}
public Maintainer() {
}
@Override
public void work(){
System.out.println("工号为"+this.getNum()+"的维护专员"+this.getName()+"在解决不能共享屏幕问题");
}
}
Buyer类
package com.itheima.exercises.domain;
public class Buyer extends AdminStaff {
public Buyer(int num, String name) {
super(num, name);
}
public Buyer() {
}
@Override
public void work(){
System.out.println("工号为"+this.getNum()+"的采购员"+this.getName()+"在采购音响设备");
}
}