我们知道Java的非成员变量需要强制让你给它赋值,因为学过C语言都知道声明一个变量不初始化就是乱码,乱码没有意义,还有安全隐患。所以Java强制让你给非成员变量赋值,

至于为什么成员变量有默认值?

那得多亏了构造函数,想要new对象必须至少拥有一个构造函数,拿默认的无参构造函数来讲,虽然表面上看着它什么也没做,其实底层不单只是为对象分配内存,它也同时初始化对象上的成员变量。

一个深刻的例子就是,C语言构造结构体时,肯定不是单单声明出来,而是自己写一个类似于Java的构造函数来构造一个结构体。

typedef struct _User{

char *account

char *password

}User;

User* new_User() //无参构造函数

{

User *this = (User *)malloc(sizeof(User));

this->account = NULL;

this->password = NULL;

return this;

}

User* new_User(char* account, char *password) // 有参构造函数,当然C语言不支持重载,函数同名只是为了示范

{

User *this = (User *)malloc(sizeof(User));

this->account = account;

this->password = password;

return this;

}

int main(void)

{

User *user1 = new_User("admin","admin");

printf("帐号:%s\n密码:%s\n",user1->account, user1->password);

return 0;

}

java 成员变量 默认_为什么Java成员变量有默认值,而非成员变量没有?相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java变量同名_浅析Java中局部变量与成员变量同名解决技巧

    要想区分这哥俩,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中 ...

  3. java接口多态的变量能_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...

    Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...

  4. java第三章_【Java】第三章 变量

    1 什么是变量 用来命名一个数据的标示符 year这个标识符就是一个变量,它代表1949这个值 int year = 1949; int是数据类型,表示是整数 year是一个标识符 =是赋值操作符 1 ...

  5. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

  6. JAVA redis缓存过期_失效java服务器

    Java 并发/多线程教程--4并发模型 本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平 ...

  7. java编程思想 初始化_《java编程思想》_第五章_初始化与清理

    初始化和清理是涉及安全的两个问题,java中采用了构造器,并额外提供了"垃圾回收器",对于不再使用的内存资源,垃圾回收器能自动将其释放. 一.用构造器确保初始化 java中,通过提 ...

  8. java序列化的方法_【Java常见序列化与反序列方法总结】

    人和电脑在很多方面都是十分相似的,大脑可以看成电脑主机,五官/身体等表面器官就是显示器.鼠标等外设.这篇文章就是想把计算机跟人做类比YY一下序列化和反序列化的机制.用途. 如果你是初学者,心里肯定会问 ...

  9. java高级必须懂得_反射---Java高级开发必须懂的

    理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助. 一.Class类的使用 1.万事万物皆对象,(当然,基本数据类型 ...

  10. java runnable线程锁_多线程 java 同步 、锁 、 synchronized 、 Thread 、 Runnable

    线程 1 线程概述 1.1 什么是线程 v  线程是程序执行的一条路径, 一个进程中可以包含多条线程 v  一个应用程序可以理解成就是一个进程 v  多线程并发执行可以提高程序的效率, 可以同时完成多 ...

最新文章

  1. Schema约束模式实例
  2. Error in install.packages : cannot remove prior installation of package
  3. 【原创】WinCE下流驱动开发流程
  4. pkg-config简介 pkgconfig
  5. 健康很重要 程序员应该坚持正确的坐姿工作
  6. 虚拟服务器启动顺序,认识VPC2007的虚拟机系统启动顺序
  7. oracle 之 安装后pl/sql登录报ora-12154
  8. 使用 ADO.NET连接SQL Azure
  9. c语言上机考试设计题及答案,C语言程序设计基础上机考试一题目及参考答案.doc...
  10. mysql服务没有权限开机不会自启动_计算机服务项里没有MySQL服务,无法设置开机自启动或者关闭自启动,的解决办法...
  11. openCVPracticalExercise学习笔记04
  12. steam第三方授权登录不稳定(openid4java)
  13. vmware卸载不干净,重装不了问题;装了虚拟机上不了网问题;装了虚拟机发现windows在cmd中ping不了虚拟机,虚拟机能ping的了windows;secureCRT或者filezilla连接
  14. SQL Server2012企业版与标准版比较
  15. 狂神 redis笔记 docker
  16. 苹果App Store审核指南中文翻译
  17. 什么是公考、联考、国考、省考、选调生?
  18. netcat使用方法
  19. Python中找出dataframe中的重复的行 DataFrame.duplicated()方法
  20. 计算机中丢失swr.dll,win10电脑中模块initpki.dll加载失败提示0x80004005错误代码如何解决...

热门文章

  1. 台式计算机虚拟内存怎么设置,电脑虚拟内存怎么设置最好 电脑虚拟内存不足怎么解决...
  2. websocket ping pong
  3. TOM邮箱|怎么在邮箱里设置邮件个人签名呢?
  4. PyCharm获取csv文件
  5. 各个蒙版的作用与区别
  6. Tableau超市案例分析
  7. 《javascript设计模式与开发实践》——第一章(面向对象的javascript)学习记录
  8. /*模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每个月还款金额: 总利息=贷款金额*利率; 每月还款金额=(贷款金额+总利息)/贷款年限
  9. BZOJ 4199 品酒大会
  10. [培训-无线通信基础-8]:分集技术(微分集、宏分集、信号合并、分集增益)