不知不觉中,工作已3年多,在这3年里,碰到了许多技术上和业务上的问题,不过在自己的努力和同事的帮助下也都解决了,自己也成长很多。今年春节之后,突然萌生了跳槽的想法,然后自己也就在网上了解了一些关于面试的分享心得,看后发现大部分的面试题只有一个模糊的答案,泪奔,于是决定重新整理自己知识点并补充(参考各位大大的面试题分享)。方便后续回顾。
闲话不多说了,开始进入正题,因为自己主攻的是java,所以就先从java基础开始整理,
1、什么是java关键字
百度百科中是这样描述的“Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。”
按我的理解,java关键字就是java语言和运行平台的一种约定,就和我们生活中的交通标志一样,是约定好的,开车中遇到什么标志就会做相应的处理,java中的关键字也是同样的作用。
2、static关键字的含义
表明具有静态属性
3、static关键字的使用
总的来说,static主要有4种:修饰成员变量,修饰成员方法,静态块和静态导包。
(1)修饰成员变量
java中的三大变量:实例变量,局部变量,静态变量(类变量)。
局部变量:就是本地变量,在方法,构造器和块中使用,在方法,构造器和块进入中创建,退出时即被销毁。
实例变量:在类中声明,但是在方法,构造器和块的外面,属于对象,只有对象被创建后,实例变量才会被使用,对象销毁即被销毁。只有用“对象。实例变量”的方式来引用。
静态变量:又叫类变量,在类中用static关键字声明,在方法,构造器和块之外,每个类只有一个类对象,不管这个类有多少对象,只要静态变量所在的类被加载,就会为静态变量分配空间,可以被使用,引用方式有2种:“类.静态变量”和“对象.静态变量”。
例子
public class Test { //定义类变量 public static String name ="小明"; //定义实例变量 public int age = 27; public String test(){ //定义局部变量 String name1 = "小红"; return name1; } public static void main(String[] args){ System.out.println("静态变量:人名:"+Test.name); Test test = new Test(); System.out.println("实例变量:年龄:"+test.age); System.out.println("局部变量:人名:"+test.test()); } }
(2)修饰成员方法
static方法是类的方法,最大的作用是可以使用“类名.方法名”的方式使用,避免了要先new出对象,节省资源,
static方法中不能使用super和this关键字,不能调用非static方法,不能使用非static修饰的成员变量和方法,很简单,static修饰的方法属于类的,如果去直接使用对象的的成员变量,那就无法确定该使用哪一个对象的属性。
单例设计模式
单例模式就是通过static来实现的。这一模式的目的是使类的一个对象成为系统中的唯一实例,单例模式的具体内容可参考网上的一些文章,这里就不做详述。
(3)静态块
这个很好理解,static代码块只会被执行一次,同时,在创建对象时,static修饰的成员会首先被初始化。
(4)静态导包
和上面3个用途相比,这个用途了解的人可能就少了,我也是专门百度才了解到的,大家在工作中可能会遇到,只是不知道为什么能这样用,这里举个简单的例子:
package com; public class People { public static void test(String n){ System.out.println(n+"静态导包"); } }
import static com.People.*; public class People1 { public static void main(String[] args){ test("我是"); } }
输出结果:我是静态导包
采用static导入包后,在不与当前类的方法名重复的情况下,我们可以直接使用"方法名"去调用类方法。