zoukankan      html  css  js  c++  java
  • 我的Java学习笔记-语法

    Java的语法与C#的语法基本都一样,毕竟都是面向对象编程语言。下面记录下Java独有的和我在C#中学习不熟的语法知识

    一、Java是解释型语言

    二、Java修饰符

    1. 访问控制修饰符

    default,public,protected,private

    2. 非访问控制修饰符

    static:静态方法,不能使用类的非静态变量;静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。

    final:

      final变量:final变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。(???) final 修饰符通常和 static 修饰符一起使用来创建类常量。

      final方法:final 方法可以被子类继承,但是不能被子类修改。声明 final 方法的主要目的是防止该方法的内容被修改。

      final类:final 类不能被继承,没有类能够继承 final 类的任何特性。

    abstract:

      abstract类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。抽象类可以包含抽象方法和非抽象方法。抽象类可以不包含抽象方法。

      abstract方法:抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。抽象方法不能被声明成 final 和 static。

    synchronized:synchronized 关键字声明的方法同一时间只能被一个线程访问.

    transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。(???)

    volatile:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

    三、其他语法

    1. java 增强for循环

    Java5 引入了一种主要用于数组的增强型 for 循环。

    for(声明语句 : 表达式)
    {
       //代码句子
    }
    
        String [] names ={"James", "Larry", "Tom", "Lacy"};
          for( String name : names ) {
             System.out.print( name );
             System.out.print(",");
          }    
    

     2. Java Number & Math 类

    Number的内置数据类型有:byte、int、long、double等

    内置数据类型的包装类有:Integer、Long、Byte、Double、Float、Short

    Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

    3. StringBuffer 和 StringBuilder 类

    和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

    StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    4. Java日期时间

    java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

    第一个构造函数使用当前日期和时间来初始化对象。Date( )

    第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。Date(long millisec)

    (1)使用SimpleDateFormat格式化日期:
    import java.util.*;
    import java.text.*;
    public class DateDemo {
       public static void main(String args[]) {
     
          Date dNow = new Date( );
          SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
     
          System.out.println("Current Date: " + ft.format(dNow));
       }
    }
    //Current Date: Wed 2016.11.09 at 08:23:19 AM UTC
    

    (2)使用printf 格式化日期

    System.out.printf("年-月-日格式:%tF%n",date); 
    //年-月-日格式:2012-09-10 
    

     (3)解析字符串为时间

    SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。

    import java.util.*;
    import java.text.*;
    public class DateDemo {
       public static void main(String args[]) {
          SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
          String input = args.length == 0 ? "1818-11-11" : args[0]; 
          System.out.print(input + " Parses as "); 
          Date t; 
          try { 
              t = ft.parse(input); 
              System.out.println(t); 
          } catch (ParseException e) { 
              System.out.println("Unparseable using " + ft); 
          }
       }
    }
    

     (4)Calendar类

    Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

    Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

    Calender的月份是从0开始的,但日期和年份是从1开始的

    Calendar c = Calendar.getInstance();//默认是当前日期
    
    //创建一个代表2009年6月12日的Calendar对象
    Calendar c1 = Calendar.getInstance();
    c1.set(2009, 6 - 1, 12);
    

     Calendar类对象信息的获得

    Calendar c1 = Calendar.getInstance();
    // 获得年份
    int year = c1.get(Calendar.YEAR);
    // 获得月份
    int month = c1.get(Calendar.MONTH) + 1;
    // 获得日期
    int date = c1.get(Calendar.DATE);
    

    5. Java休眠(sleep)

    sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。

    import java.util.*;
      
    public class SleepDemo {
       public static void main(String args[]) {
          try { 
             System.out.println(new Date( ) + "
    "); 
             Thread.sleep(1000*3);   // 休眠3秒
             System.out.println(new Date( ) + "
    "); 
          } catch (Exception e) { 
              System.out.println("Got an exception!"); 
          }
       }
    }
    
  • 相关阅读:
    第一章 监控系统入门
    第十八章 Tagging_Redis6.2.1 服务器部署
    第十五章 ACL安全策略
    第十七章 Redis常见管理命令
    第五章 监控系统zabbix快速监控一台主机
    第十九章 Redis6.2.1脚本安装
    第三章 监控系统zabbix4.2官方源安装
    第十六章 Redis6.0其他新功能
    CSS教程:div垂直居中的N种方法
    css 文本两端对齐
  • 原文地址:https://www.cnblogs.com/niuniu1985/p/8318092.html
Copyright © 2011-2022 走看看