JAVA学习笔记——JAVA基础语法(二)
一、面向对象和面向过程的区别
面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑的是怎么去也就是说:what to do
面向对象:它所考虑的是有几个对象,比如开车去深圳我们要考虑的就是有几个对象,也就是说:how to do
二、类
概念:是对象的模板,它是具有相同属性和行为(方法)的一组对象的集合
对象和类的区别:类是抽象的,而对象是具体存在的
知识扩充:同一个文件夹中只能有一个类是public的,而且main()方法绝对是包含在public类当中
三、构造方法(构造器、构造函数)
作用:1、主要是用来创建对象 2、初始化成员变量
特点:1、必须与类名相同 2、没有返回值类型,void也没有 3、每一个类都会有一个隐式的构造方法,没有参数和方法体 4、手动添加显式的构造方法那么隐式的构造方法自动消失
知识扩充:面向对象编程思维步骤:1、考虑有几个对象 2、通过对象确定有几个类 3、找出每一个类中存在的方法 4、调用相应的方法实现功能
例如这个简单的例子:public class test{
public static void main(String[] args){
Mouse mouse = new Mouse();
mouse.name = "mick";
Cat cat = new Cat();
cat.name = "Tom";
cat.Catch(mouse);
}
}
class Cat{
String name;
public void Catch(Mouse mouse){
mouse.cry();
}
}
class Mouse{
String name;
public void cry(){
System.out.println(name + " is crying");
}
}
思维方式:找出有两个对象tom猫和mick老鼠。进而找出有两个类一个是猫类一个是老鼠类,然后确定两个对象内部分别包含两个方法一个是属于tom对象的catch()方法一个是属于mick 对象的cry()方法
专家模式:一个方法改变的是那个对象的状态(属性),那么该方法就属于谁
四、JVM(JAVA虚拟机)的四个区域
1、代码区(code segment):存放的是字节码
2、堆区(heap segment):存放的是对象
3、栈区(Stack segment):存放的是局部变量
4、栈区的一块特殊区域(static segment):存放字符串常量和静态变量
堆和栈的区别:堆可以保存大的数据类型运行速度慢;栈只可以保存小的数据内容但是运行速度快
局部变量和成员变量重名的问题解决办法
办法:该情况下使用this指针,因为每一个对象都有一个this指针,相当于当前对象的引用。原理如下图所示:
图 1
五、成员变量初始化
1、JAVA当中,成员变量会默认初始化
数值类型:默认为0 布尔类型(boolean):默认为false 字符类型(char):默认是空 引用数据类型:默认是NULL
null值的含义:表示一个引用没有指向任何一个对象,也就是谁栈中的一个引用没有指向任何一个栈中的内存地址,如上图所示形象来说就是“引用”的那个箭头没有
2、JAVA中的垃圾回收机制(GC)
如果一个对象没有指向任何一个引用,那么这个对象就是JAVA中的垃圾,JAVA会自动调用GC自动收回
知识延伸:如果说在JAVA中需要一个对象使用完后就被GC收回,最好的变法就是把指向这个对象的引用设置为NULL
六、Static关键字
1、加上static的成员变量称之为静态变量(类变量)
static segment中的数据不能重复,所有对象共享其数据,其中一个对象对其进行修改之后那么其他的对象的值也随之改变
因为所有对象共享它,跟对象没有任何关系,所以也就称之为类变量;可以使用 类名.变量名 来调用
如下图所示逻辑:
图 2
堆里面的两个对象共享 Static segment里面的静态变量Corcol;如果要改变其值只需使用 Person.Corcol 即可改变其值
2、加上static的方法称之为静态方法(类方法)
类方法不需要创建对象来调用,可以直接是用 类名.方法名 调用
注意:(1)、静态的方法只能访问静态的成员变量
(2)、非静态的方法既可以访问静态的成员变量也可以访问非静态的成员变量
知识延伸:为什么main()方法是static的?
因为main()方法是程序的入口,在使用main()方法之前不允许有任何的对象被调用,所以说main()方法务必是static的
以上知识均为本人学习总结所得、如有错误请加以批评指正
转载于:https://www.cnblogs.com/bod08zhongkewen/archive/2013/01/29/2880782.html
JAVA学习笔记——JAVA基础语法(二)相关推荐
- Java学习笔记之基础语法(一)
目录 前言 一.基础语法 基础概念 运算符 数据输入Scanner 条件判断 循环 Random 二.IDEA安装与使用 IDEA项目结构介绍 IDEA中HelloWorld步骤 IDEA快捷键 前言 ...
- java基本语法心得_Java学习笔记(一)——基础语法(上)
Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...
- Java学习笔记之基础篇
Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...
- 狂神说Java学习笔记 Java基础
目录 机器语言 第二代语言(汇编语言) 第三代语言 高级语言 Java特性和优势 JDK(Java Development Kit) JRE(Java Runtime Enviroment) JVM( ...
- Java学习笔记:进阶语法
文章目录 一.对象内存管理: ①堆内存: ②垃圾回收机制: ③栈: ④方法区: 二.Debug调试: 三.API文档: ①JDK API: ②文件注释规范: ③导出项目的JavaDoc文档: 四.字符 ...
- Java学习笔记之基础应用(2015.3.21)
最近打算好好学习下Java,所以打算记录下一些知识点或者是值得记住需要记住的代码吧! 1.灵活使用位运算实现加密算法 可以使用"^"异或运算符把字符串与一个特定值进行异或运算,这样 ...
- java学习笔记—java的学习路线
Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA). J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基 ...
- Go语言学习笔记—golang基础语法
视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 golang基础语法 一.gola ...
- Go语言学习笔记之基础语法(一)
目录 1. Go语言介绍 Go语言是什么 Go语言优势 Go适合用来做什么 2. Go环境搭建 通过Sublime 编译运行go程序 学习资料 3. 第一个Go程序 通过命令行运行程序 4. 基础语法 ...
- Python学习笔记(2)-基础语法
1 ########### python基础语法 ################### 2 3 #标识符 4 #第一个字符必须是字母表中字母或下划线-- 5 #标识符的其他部分有字母,数字和下划线组 ...
最新文章
- SVN提示被锁定的解决方法(转)
- Linux之traceroute命令使用详解—网络故障定位(三)
- python怎么判断一个文件是否存在-python判断文件是否存在的方法
- 计算机哪里看到32位还是64位,如何看电脑是32位还是64位?
- MySql绿色版安装过程记录
- java 访问私有成员,在Java中访问私有方法?
- ida 字符串查找_IDA 搜索中文字符串
- 日语学习-多邻国-关卡1-时间2
- 阿里云未来三年投2000亿“搞基”背后的野心和公心(2020年4月)
- pythonwindow程序窗体操作_python操作Windows窗口程序
- 如何用php开启企业微信开发的回调模式
- python 常用的几个镜像源
- 艾肯MICU声卡安装调试教程
- c语言小程序跑马灯,小程序横向跑马灯效果(3种方式)
- DSP的入门学习(一)
- k3梅林单线双拨教程_斐讯 K3 路由器刷入 OpenWrt LEDE 固件教程,支持多拨及去广告...
- Cortex-M3 (NXP LPC1788)之开发环境搭建
- 基于Tablet pc 的墨迹手写识别输入法
- 使用IDEA编写Java程序时遇到的小提醒Common part can be extracted from ‘if‘
- 建模方法(十)-灰色预测模型GM(1,1)
热门文章
- SpringBoot-文件在线预览解决方案-基于OpenOffice及jacob
- 检查在Unix Shell脚本中设置环境变量的简洁方法是什么?
- css 设置表格右边有图片_我写CSS常用的方法
- Win10电脑如何合并磁盘分区
- 在普通类中获取spring容器中的bean
- springBoot跨域注解@CrossOrigin
- Android:学习路线总结,绝对干货
- linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门
- 2D转换之旋转rotate(CSS3)
- Anguar 使用interceptor拦截器设置请求头传入jwt token