鱼C论坛

 找回密码
 立即注册
查看: 2579|回复: 0

[学习笔记] Java暑期学习Day14

[复制链接]
发表于 2017-7-18 23:54:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天是第14天,希望能坚持每天都记录一点东西


                               
登录/注册后可看大图


如果对象数据成员被声明为final,但没有明确使用=指定值,那表示延迟对象成员值的指定在构造函数执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。
The blank final field x may not have been initialized
initialized:已初始化的;


static关键字
(被声明为static的成员,不会让个别对象拥有,而是属于类。)


   A.用来修饰类的成员-修饰成员变量的称之为类变量(静态变量),修饰成员方法的称之为类方法(静态方法)
   B.当类被加载的时候就会被加载,优先于对象的存在
   C.用来修饰语句块——称之为静态代码块。先于构造方法之前执行,只会执行一次,用来对静态成员做初始化。
   D.静态修饰的成员被所有的对象共享
   E.调用的时候可以直接通过类名.成员来进行访问


static关键字注意事项
  a.静态方法中只能访问外部的静态成员
  b.静态方法中不能出现this关键字
  1. class Account {

  2.         public static int number1 = 1;// 静态变量(类变量)
  3.         // 它不属于任何一个对象,被多个对象共享

  4.         public int number2 = 2;

  5.         public Account() {
  6.                 System.out.println("constructor");
  7.         }

  8.         /*
  9.          * static语句块 在类被加载的时候就会执行, 只会执行一次,用来对静态的变量赋值 优先于构造方法的执行
  10.          */
  11.         static {
  12.                 System.out.println("static");
  13.                 number1 = 100;

  14.         }

  15.         // 静态方法中不能访问非静态变量
  16.         // 静态方法中不能使用this
  17.         public static void showNumber1() {
  18.                 // showNumber2();
  19.                 System.out.println(number1);
  20.                 // System.out.println(number2);
  21.                 // Cannot make a static reference to the non-static field number2
  22.         }

  23.         // 非静态方法可以访问静态的内容和非静态的属性和方法

  24.         public void showNumber2() {
  25.                 System.out.println(number2);
  26.                 System.out.println("非静态方法访问静态变量" + number1);
  27.         }
  28. }

  29. public class StaticDemo {

  30.         public static void main(String[] args) {
  31.                 /*
  32.                  * Account acc1 = new Account(); acc1.number1++; acc1.showNumber1();
  33.                  * //acc1.showNumber2();
  34.                  *
  35.                  * Account acc2 = new Account(); acc2.showNumber1(); //
  36.                  * acc2.showNumber2();
  37.                  */

  38.                 /*Account.number1++;
  39.                 System.out.println(Account.number1);

  40.                 Account.showNumber1();*/

  41.                 Account acc1 = new Account();
  42.                 acc1.showNumber2();
  43.                 Account acc2 = new Account();
  44.                 acc2.showNumber2();
  45.         }

  46. }
复制代码

   a.以类命名实例来说,首字母是大写。
   b.在JDK5之后,新增了import static语法,可以在使用静态成员间少打几个字。

  1. import java.util.Scanner;
  2. import static java.lang.System.in;
  3. import static java.lang.System.out;

  4. public class ImportStatic {

  5.         public static void main(String[] args) {

  6.                 Scanner scanner = new Scanner(in);

  7.                 out.print("请输入姓名");
  8.                 out.printf("%s 你好!%n", scanner.nextLine());

  9.         }

  10. }
复制代码

import static的名称冲突问题——有些名称冲突编译程序可通过以下顺序来解析

a.局部变量覆盖:选用方法中的同名变量、参数、方法名称
b.成员覆盖:选用类中定义的同名数据成员、方法名称
c.重载方法比较:使用import static的各个静态成员,若有同名冲突,尝试通过重载判断。


JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。)




评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 22:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表