一、默认值问题:

由于全局变量(又称成员变量)的内存空间为堆内存,所以全局变量有默认值:引用类型的默认值为null(空的)、基本数据类型int的默认值为0 、float的默认值为0.0(非0.0f)、 boolean的默认值为false、char的默认值为空字符。

由于局部变量的内存空间为栈内存,所以局部变量没有默认值,所以下面标记1处代码在编译时会出错,其错误原因为“Initialize variable”

package com.heima.vo;

public class Test{
                   public static void main(String[] args){
                               String name;
                               System.out.println(name);//标记1
                   }
         }

二、构造函数问题:

构造函数是创建对象的必备“原料”,其主要功能用于初始化全局变量(又称成员变量),对于构造函数有以下认识:

①、构造函数中不能有return关键字。我们知道return关键字在普通方法中是非常常见的,其作用主要有两个——结束整个函数和返回结果值,但是在构造函数中是不允许出现该关键字的。

②、构造函数间的调用采用this语句,并且该语句必须放在构造函数有效代码的第一行。

③、一个类中默认含有一个空参数的构造函数(如果你写出了这个类的无参构造函数,这时的构造函数并不能称之为默认构造函数,默认构造函数是不能显示的,换句话说默认构造函数是不能被看到的),这个默认的构造函数的权限和所属类的访问权限是一致的,比如如果类被public修饰,那么默认构造函数的访问权限也是public。简言之:构造函数的访问权限是随着类的访问权限的变化而变化的。

三、对构造代码块的认识:

看下面代码:

package com.heima.vo;

class Student{
                   private String name;
                   private int age;
                   {//构造代码块。注意:如果前面加上关键字static,则该代码块只会在创建第一个学生对象时执行,创建第二个、第三个...则不再执行。
                               System.out.print("学生类!!!——");
                   }
                   Student () {

System.out.println("无参的构造函数!!!");
                   }
                   Student (String name,int age) {

this.name=name;
                              this.age=age;
                              System.out.println("有参的构造函数!!!");
                   }
          }

class Test{

public static void main(String[] args){

new Student();//该行代码执行后输出的结果为:学生类!!!——无参的构造函数!!!
                              new Student("wangwu",12);该行代码执行后输出的结果为:学生类!!!——有参的构造函数!!!
                   }
        }

从执行的结果不难看得出:在创建类的对象时构造代码块中的代码都会执行并且先于构造方法;

构造代码块的作用:鉴于构造代码块的上述特点,构造代码块主要用于为对象的公有属性进行初始化,比如:学生类中有一个country的属性(国籍),那么如果这行代码做的软件使用的用户全为中国人,则这时代码可以这样写:

package com.heima.vo;

class Student{
                   private String name;
                   private String country;
                   private int age;
                   {
                           country="中国";
                   }
                  Student (String name,int age){
                           this.name=name;
                           this.age=age;
                   }
         }

class Test{

public static void main(String[] args){

new Student("wangwu",12);
                              new Student("lisi",15);
                              new Student("liliu",16);
                 }
        }

这样写的代码在创建对象时则比较方便,如果country属性的值也在有参构造方法中赋值,则在创建对象时“中国”这两个字都要作为实参传入到有参构造函数中。

四、对构造函数和构造代码块区别的认识:

构造代码块主要是给对象进行统一初始化,构造代码块中初始化的是不同对象共性的初始化;构造函数是给对应的对象初始化。

java基础杂谈(一)相关推荐

  1. Java基础恶补——内存泄露、内存溢出

     Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...

  2. 【Java从入门到天黑|02】SE入门之Java基础

    大家好,我是孙叫兽,微信公众号[孙叫兽杂谈],本期给大家分享一下JavaSE的入门部分之Java基础 目录 注释 标识符 数据类型 类型转换 变量,常量 运算符

  3. 狂神说java java基础篇 学习笔记

    java基础的视频内容笔记都在这了 前言等字数非常长的章节,使用了AI语音识别成文字后修改的,有错漏欢迎提出 面对对象模块的按照自己的理解进行了内容修改,可以对比原视频内容理解,如有建议欢迎提出 前言 ...

  4. 一个计算机专业学生几年的编程经验汇总 (该系列一共 11 篇,看完之后,java 基础绝对有不小的提升!)

    Java 杂谈(一) 想来学习 Java 也有两个年头了,永远不敢说多么精通,但也想谈谈自己的感受,写给 软件学院的同仁们,帮助大家在技术的道路上少一点弯路.说得伟大一点是希望大家为软件 学院争气,其 ...

  5. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  6. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  7. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  8. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  9. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  10. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

最新文章

  1. 先搞懂这八大基础概念,再谈机器学习入门!
  2. 谷歌内部考核制度OKR是怎么样的?你会用OKR吗?
  3. css样式继承规则详解
  4. Ubuntu 12.04软件源、更新源
  5. VC各种情况下的窗口句柄的获取
  6. 至强cpu型号列表_装机必看——CPU型号参数详解
  7. 01-centos安装界面,远程连接
  8. kafka python client:PyKafka vs kafka-python
  9. 论文Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge阅读笔记
  10. python写扫雷脚本_利用Python实现自动扫雷小脚本
  11. idea mybatisplus 插件_MyBatisPlus 快速上手
  12. Scrapy爬取并分析CSDN热门文章标题
  13. java 二叉树 叶节点_java二叉树和叶子节点的实现
  14. 易康(eCognition)对象几何特征--2:几何(Geometry)_ 形状(Shape)
  15. python spss写论文_自从用 spss 写了论文。。。。
  16. geem2登陆器修改服务器列表,Gee引擎怎么更换登陆器皮肤 GeeM2传奇编辑自定义皮肤的方法讲解...
  17. PS去水印的四种方式
  18. 「完美解决」关于最新Ubuntu22.04.1安装launchpad里面PPA报错:“InRelease not available“,“not found file“等
  19. 前端页面项目——博客系统
  20. LayaBox H5游戏性能优化

热门文章

  1. Http 请求处理流程[转]
  2. 第133天:移动端开发的一些总结
  3. virtualbox中给CentOS根分区扩容的方法
  4. 结合使用 Oracle Coherence 和 Spring Batch 进行高性能数据处理
  5. mysql拼接两字段查询
  6. 专注于分享,米狗网!
  7. 用ASP.NET上传大文件 (转载自思归blogs)
  8. 3.剑指Offer --- 高质量的代码
  9. 16.卷1(套接字联网API)---非阻塞式IO
  10. 8.configurable product