java基础杂谈(一)
一、默认值问题:
由于全局变量(又称成员变量)的内存空间为堆内存,所以全局变量有默认值:引用类型的默认值为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基础杂谈(一)相关推荐
- Java基础恶补——内存泄露、内存溢出
Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...
- 【Java从入门到天黑|02】SE入门之Java基础
大家好,我是孙叫兽,微信公众号[孙叫兽杂谈],本期给大家分享一下JavaSE的入门部分之Java基础 目录 注释 标识符 数据类型 类型转换 变量,常量 运算符
- 狂神说java java基础篇 学习笔记
java基础的视频内容笔记都在这了 前言等字数非常长的章节,使用了AI语音识别成文字后修改的,有错漏欢迎提出 面对对象模块的按照自己的理解进行了内容修改,可以对比原视频内容理解,如有建议欢迎提出 前言 ...
- 一个计算机专业学生几年的编程经验汇总 (该系列一共 11 篇,看完之后,java 基础绝对有不小的提升!)
Java 杂谈(一) 想来学习 Java 也有两个年头了,永远不敢说多么精通,但也想谈谈自己的感受,写给 软件学院的同仁们,帮助大家在技术的道路上少一点弯路.说得伟大一点是希望大家为软件 学院争气,其 ...
- Java基础入门语法和安装
1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...
- Java笔记整理-02.Java基础语法
1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- Java基础概念性的知识总结
属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...
- 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...
- 叮!您收到一份超值Java基础入门资料!
摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...
最新文章
- 先搞懂这八大基础概念,再谈机器学习入门!
- 谷歌内部考核制度OKR是怎么样的?你会用OKR吗?
- css样式继承规则详解
- Ubuntu 12.04软件源、更新源
- VC各种情况下的窗口句柄的获取
- 至强cpu型号列表_装机必看——CPU型号参数详解
- 01-centos安装界面,远程连接
- kafka python client:PyKafka vs kafka-python
- 论文Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge阅读笔记
- python写扫雷脚本_利用Python实现自动扫雷小脚本
- idea mybatisplus 插件_MyBatisPlus 快速上手
- Scrapy爬取并分析CSDN热门文章标题
- java 二叉树 叶节点_java二叉树和叶子节点的实现
- 易康(eCognition)对象几何特征--2:几何(Geometry)_ 形状(Shape)
- python spss写论文_自从用 spss 写了论文。。。。
- geem2登陆器修改服务器列表,Gee引擎怎么更换登陆器皮肤 GeeM2传奇编辑自定义皮肤的方法讲解...
- PS去水印的四种方式
- 「完美解决」关于最新Ubuntu22.04.1安装launchpad里面PPA报错:“InRelease not available“,“not found file“等
- 前端页面项目——博客系统
- LayaBox H5游戏性能优化