JAVA学习笔记——JAVA基础语法之精华
一、标识符
概念:JAVA里面我们可以给他取名字的(变量、类、方法等等)就是标识符:
注意:1、标识符只能包含字母、数字、下划线还有美元符号$
2、只能以字母、下划线和美元符号开头
二、变量
概念:JAVA中储存数据的最小单元
扩展:计算机中保存数据的最小单元是位(一个0或是一个1就是一位)
8bite = 1byte(字节) 1024byte = 1KB 1024kb = 1MB
一个英文字符占1个字节;一个中文字符占2个字节
作用:使用变量名来代替了计算机内存中的地址
分类:
按照位置上来分:
1、成员变量:定义在类的里面,方法的外面
2、局部变量:定义在方法里面的
按照数据类型来分
1、基本数据类型:4类8种
2、应用数据类型:除了基本数据类型之外的都是基本数据类型
作用域:变量的适使用范围
一般情况下变量在哪对大括号中定义就只能在哪对大括号中使用
三、数据类型
概念:对变量名定义一个存放数据的类型,然后对变量进行赋值
4类8种数据类型:
4类:
1、布尔类型(boolean)
一般用来表示逻辑运算只有true和false两个值
2、字符类型(char)
字符串的常量要使用双引号“ ” 如果是字符的常量要使用单引号‘ ’
注意:JAVA的字符类型是2个字节 C语言是1个字节的
JAVA使用的是unicode编码(思考:理解一下字符编码的概念及作用)
3、整数类型
byte(1) short(2) int(4) long(8)正确使用可以节省内存的占用率
long型变量后面要加上L
4、浮点类型
float double
数据类型之间的转换规则:
1、小的自动转换成大的
(从低到高数据类型顺序)byte short char int long float double
2、boolean和其他数据类型之间不允许进行转换
3、大的转换成小的数据类型要加强制类型转换,务必要注意溢出的问题
4、byte、short、char之间不能进行转换,如果参与了运算会先把自己转换成int类型
再 参加运算
注:当有多种数据类型混合运算的时候先把数据类型转换成参加运算的数据类型最高的那一个再参与运算
运算符中&&比逻辑与运算效率更高,因为当前面的计算结果出来之后为false的话就不需要再计算后面的而是直接给出结果
四、参数
实际参数:方法调用的时候传入的参数既称为实际参数
形式参数:就是用来接受实际参数的,一般放在被调用的函数体里面的
注意:形式参数和实际参数的数据类型要一样,个数要匹配
五、面向对象和面向过程的区别
面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑的是怎么去也就是说: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/hejiajunsh/articles/2881397.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 #标识符的其他部分有字母,数字和下划线组 ...
最新文章
- python logging模块的作用_Python 日志模块logging分析及使用-2
- 用美图秀秀(微软调色版)生成的R分量为255的图片在MATLAB和OpenCV中R分量为254
- Building a Simple, Local, Python Blockchain – Part 1
- Delphi 从PaintBox拷贝一部分内容到TBitmap
- php实现文字向左跑马灯,js实现文字跑马灯效果
- Python 装饰器详解(上)
- 飞鸽传书该如何去优化?
- jquery-ajax请求-1909
- javascript要点_JavaScript要点:为什么您应该知道引擎如何工作
- Android 系统(82)---ART 和 Dalvik
- g++: internal compiler error: Killed (program cc1plus)Please submit a full bug report,内存不足问题解决
- 计算机c语言知识点txt,计算机二级C语言(重要知识点)
- mysql创建表有则删除_MySQL创建表和删除表
- tensorflow2.0内存溢出解决办法
- C-Free 3.5.2 注册码
- js获取网络时间(axios获取响应头时间)
- Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)
- MATLAB向量运算
- 2020-12-25
- PhotoShop 之移动选区
热门文章
- 关于eclipse项目的x号报错的一些问题
- 【1】生产者-消费者模型的三种实现方式
- 图片异步上传,使用ajax上传图片
- [转载]如何判断js中的数据类型
- linux 进程线程拓展
- word2vec相关资料
- 解决ListView 缓存机制带来的显示不正常问题
- 设置Netbeans 6.5为英文界面
- mysql往前一天同一时间_Mysql时间轴数据 获取同一天数据的前三条
- javax.script.ScriptException: ReferenceError: xxx is not defined in eval