Java关键字

         在Java中,有保留字和关键字两种。保留字和关键字是什么呢?Look:保留字:为java预留的关键字。现在还没用到,但是在升级版本中可能作为关键字。关键字:Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。两者的不同就在与一个正在使用另一个还没使用。

        保留字只有const和 goto。 对于关键字,我们可以用分类的方法来学习:

        一、关于包的

               import 引入包        package 包基本类型

       二、与类相关

             1、访问控制

                     public    protect  private 

                     对于这三个,当人还有一个是默认的(default),我们用一个表格来理解:

       Java访问控制

        从表中我们也知道了:public的老大,在哪里都能访问到,接着是protect,紧接着是default,就是不加访问控制关键字的时候,最小的是private,只能在当前类中使用。

        2、类、方法和变量修饰符

           super  父类   this 当前类

            abstract 声明抽象   class 类  extends 扩允,继承    final终极,不可改变的
            implements实现   interface 接口   native 本地   new 新,创建
            static 静态    strictfp 严格,精准  synchronized 线程,同步    transient 短暂
            volatile 易失

          在这里要着重了解  1、final:final用来修饰类时,该类不能被继承(String就是用final关键字限制的);用来修饰普通方法时,方法不能被改写;用来修饰属性时,属性值不能改变。还要注意的是final不能修饰抽象类、抽象方法、接口,我们想一下也能知道为什么。抽象类和接口是不能被实例化的,只能被继承,抽象方法也只能改写,如果加了final,那还有用吗?我们得给他们留下活路啊,做人不能太绝了,不然会有Bug噢。  2、static : 用了static就表示共享的,即被所有的类的实例共享。说具体点,就是不管有多少个对象,用了static修饰的方法或者属性都只有一份,且不论是否有没有实例化对象,被static修饰的内容已经存在,这也解释了为什么Color.white、Math.random()....是可行的。还可以解释为什么主函数一定要加static 了,main()是程序的入口,但类要在main()中实例化对象,main()又是类的方法,如果main()不是  static的,main()就需要一个实例来调用,但类的实例实在main()中实现的,就会矛盾。

        三、线程相关

                transient 短暂     volatile 易失    synchronized同步

         在这里还是要着重讲一下volatile和synchronized:当多个线程共同使用某个变量时,该变量最好使用volatile修饰的,让该变量的值能及时更新;当我们有多个线程要执行同一代码块,且该代码块同步运行的时候,可以讲这些代码块加入synchronized中,避免出现问题。如下:

package xiaozhi;
//线程的同步代码块
public class test_2 implements Runnable{       //我们只有一百张票,但让四个人(四个线程)来卖票    
                                               //按理说当ticket为0的时候就不继续卖了
       private int ticket=100;      
    
       
       public void run(){
			while(ticket>0){
				try {
					Thread.sleep(30);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				System.out.println(ticket--);
			}	
	}
public static void main(String[] args) {// TODO Auto-generated method stubtest_2 t=new test_2();Thread thread_1=new Thread(t);Thread thread_2=new Thread(t);Thread thread_3=new Thread(t);Thread thread_4=new Thread(t);thread_1.start();thread_2.start();thread_3.start();thread_4.start();}}


我们只有一百张票,但让四个人(四个线程)来卖票  ,按理说当ticket为0的时候就不继续卖了   但结果是:
   有了-1,-2的票,

package xiaozhi;
//线程的同步代码块
public class test_2 implements Runnable{
    private int ticket=100;
    
    
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test_2 t=new test_2();
		Thread thread_1=new Thread(t);
		Thread thread_2=new Thread(t);
		Thread thread_3=new Thread(t);
		Thread thread_4=new Thread(t);
		thread_1.start();
		thread_2.start();
		thread_3.start();
		thread_4.start();

	}
	public void run(){
		 synchronized (this){
			 while(ticket>0){
					try {
						Thread.sleep(30);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println(ticket--);
				}
		 }
				
	}
}
  当我们加了synchronized, 结果就是:     ,很好的解决了问题,至于为什么会有这种问题,在线程里详细说明。                                                                                 


      四、程序控制语句

             break 跳出循环    continue 继续   return 返回   do 运行   while循环  if 如果  else 反之   for 循   instanceof 实例    switch 开关    case 返回开关里的结果   default 默认


      五、异常处理

             try 捕获异常     catch 处理异常      finally 有没有异常都执行     throw 抛出一个异常对象throws 声明一个异常可能被抛出   

  

      六、基本数据类型

            boolean 布尔型   byte 字节型   char 字符型   double 双精度    float 浮点int 整型   long 长整型    short 短整型   null 空   true真   false 假




    
       七。总述      关键字列表(依字母排序共51组):
              abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements,       import,instanceof, int, interface, long, native, new,package, private, protected, public, return, short,static, strictfp, super,switch, synchronized,this, throw, throws, transient,
try, void, volatile, while

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值