1.jre与jdk与jvm的关系
jvm:java虚拟机是根本,是java语言可以跨平台的关键
jre:包含了jvm和java的核心类库,可以支持最简单的开发
jdk:软件开发工具包,包含了jre和软件开发工具
总结:只要安装jdk即可
2.一个java文件可以有多个类,只有主类才可以写public(不考虑内部类)
一个java文件一般只写一个类(好处):
编译更方便 可读性更强 面向对象的思想
3.环境变量
环境变量的配置
目的:将一些文件的路径系统化,可以直接调用文件名执行文件
方法:我的电脑-属性-高级系统设置-环境变量-系统变量-新建
变量名:JAVA_HOME 变量(环境变量/路径):具体的路径 C:\Program Files (x86)\Java\jdk1.8.0_31\
进入Path:添加 %JAVA_HOME%\bin %JAVA_HOME%\lib
4.关键字
.关键字:是被java赋予了特殊含义的单词,咱们只能用不能改,也不能跟这些关键字重名
//举例:class 类 public:权限(公共的) static:静态的 void :空的 package:导包
5.标识符
标识符:程序中需要我们自己命令的
1.不能跟关键字重名 2.标识符中只能包含字母,数字,_和$ 3.区分大小写 A a 4.不能以数字开头 //注意:可以使用中文作为标识符,但是一般不使用. //正确的: abc aBc a444 $aa ___ 你好 错误的: 44d class
6.注释
注释:解释说明的,不参与编译
//单行注释 control+/ /* * 多行注释 control+shift+/ */ /** * 文档注释,当我们将鼠标放在对应的方法上,会将注释的信息显示出来 */
7.常量和变量
常量:固定不变的量
分类:整数常量 44 555
小数常量 4.5 5.6 字符常量 'a' 'b' 字符串常量 "hello" 布尔常量 true false
变量:存储程序中用到的数据,它存储的数是可以改变的,只能存储一个数
8.数据类型
划分数据类型的原因:更合理的去分配空间
分类:
根据数据类型分.
/*
基本数据类型
* 数值型 范围 * >byte型 1个字节 [-2^7,2^7-1] * >short型 2个字节 [-2^15,2^15-1] * >int 4个 [-2^31,2^31-1] * >long 8个 [-2^63,2^63-1] * 布尔型 * >boolean 1个 * 浮点型(小数) * >float 4个 * >double 8个 * 字符型 * >char 1个
引用数据类型(也叫对象数据类型)
* 数组,类,接口等
根据有无符号分类:一般我们研究的是有符号型.
* 有符号型的:有正负0之分 * 无符号型:只有正0,没有负数
9.进制转换
进制转换:进制:看遇几进一,就是几进制
/* * 常用进制: * 二进制:是计算能够识别的进制 * 八进制:是辅助二进制运算和存储的. * 十进制:是人类能够识别的 * 十六进制:是辅助二进制运算和存储的. */ //负数的二进制形式说明 //数据类型的作用:通过它可以确定一个变量的大小以及类型,通过使用数据类型可以更加高效的利用内存. //通常我们将使用过程这样描述: int a; byte b; /*
10.类型转换
类型转换
//类型的高低是根据数据类型表示的数范围的大小确定的. //自动类型转换 :数据类型从低类型转成高类型,没有数据的损失 //强制类型转换:数据类型从高类型转成低类型,有可能会出现数据的损失.
数据类型高低排序
//确定数据类型的优先级,从低到高
//char,byte-short-int-long-float-double
11.char相关的内容
char相关的内容
/* char 1个字节,默认对应的语言是英文,字符集是ASCII 0-48 A-65 a-97 * 针对中文: 对应的字符集是GBK/GB2312 一个汉字2个字节 * 常用的字符集: GBK(中国标准) UTF-8(国际通用标准) ASCII(国标) uncode(内部编码) ISO8859-1(欧洲标准) * 对于中文: 2个字节 3个字节 不支持中文 2个字节 不支持中文 * * 我们通常把字符串转成二进制的过程称为编码 * 将二进制转成字符串的过程称为解码 */
12.运算符
分类:
第一:根据类型分类 * 算数运算符:+ - * / % ++(自增) --(自减) * 赋值运算符:= += -= *= /= %= ^= * 逻辑运算符:&& || ! * 关系运算符:== < <= > >= != * 位运算符:操作位的. & | ^ ~ * 移位运算符:操作位的. >> << >>> 第二:根据操作元素个数分类 算数运算符:+ - * / % ++(自增) --(自减)
逻辑运算符:
&&(逻辑与) ||(逻辑或) !(逻辑非)
特点:1.结果一定是boolean型的值 2.运算符两边的元素也必须是boolean型的值 逻辑与:一假则假,全真才真 逻辑或:一真则真,全假才假
短路与和短路或
短路与:当一个式子中有多个连续的&&,我们只需要找出第一个false,即可停止运算.因为只要有一个false,整体结果就是false 短路或:当一个式子中有多个连续的||,我们只需要找出第一个true,即可停止运算.因为只要有一个true,整体结果就是true
位运算符
* 位运算符:直接作用于位的 * 作用:因为我们直接操作的位,可以提高计算的效率 * &(按位与):全1则1,有0则0: 作用:定向清0 * |(按位或):全0则0,有1则1 * ^(按位异或):相同则0,不同则1 * ~(按位取反):1则0,0则1 */
三目运算符
?:(三目运算符) * 表达式:由多个变量和运算符组合在一起的式子 * 语句:表达式+;,窒息的一个;是空语句 * 构成: 条件 ? 结果一:结果二 * 原理:当作为条件的表达式的结果为true,整个三目元算符的结果就是结果一,否则就是结果二
注意:位运算中不存在短路与
为什么位运算更快???
复杂式子采用排除法,找到优先级最低的符号,然后根据结合性运算
流程控制语句
作用:实现现实生活的逻辑
分支,循环,顺序三种结构
分支:特点:各个分支是并列的关系,只能执行一个。
循环:避免死循环
关键字:if else; do while; for; while; switch case
13.函数
一段特殊功能的代码。
作用:可以提高程序的安全性,复用性,健壮性,可读性,节省内存。
函数的构成:
* 修饰词 返回值类型 函数名(参数列表){ * 函数的功能代码; * return 返回值; * } * 修饰词:限定当前函数的可见范围的,暂时先忽略 * 返回值类型:可以有,也可以没有,如果没有需要些void * 函数名:必须有,命名规则:遵循小驼峰原则(当有多个单词组成名字的时候,除第一个单词外,所有单词的首字母大写) * 函数名:要做到见名知意 * 参数列表:1.可以有,可以没有 2.如果有,可以有一个或多个,多个参数之间以,隔开 * return 返回值; 这里是一个动作,后面放的是要返回的数据,要求:返回值类型要与return后面的类型一致 * 注意点:return后面只能放一个数据 * 特点:有结束的意思 * * 注意:函数之间可以调用,但是不能嵌套
注意点:
- 1.if,for等可以嵌套.但是函数的定义不能嵌套,调用可以.
- 2.函数的功能必须通过调用实现
- 3.函数有功能单一性原则.即一个函数中最好只有一个功能.
- 4.函数的作用:可以提高程序的安全性,复用性,健壮性,可读性,节省内存.
注意点:
函数有功能单一性原则.即一个函数中最好只有一个功能.
1)直接定义在函数,for,if等中的变量称为局部变量.
局部变量只在他所在的函数,for,if中可见可用.出了这个范围就会从内存中消失.
2)我们把函数定义处的变量称为形参:形式上的参数
把函数调用处的变量称为实参:实际的参数
形参必须通过接受实参的值才能起作用.
我们在定义形参和实参时注意:
参数的个数要一致
参数的位置要一致
参数的类型要一致
3)return注意点:返回数据,将数据往外抛
结束的意思,在表示结束时,函数不一定有返回值.
全局变量和局部变量
全局变量存在堆区,局部变量在栈区;
对象存在堆区,函数在栈区。
全局变量:直接定义在类中的变量
- 局部变量:直接定义在函数,for,if等中的变量称为局部变量.
- 比较 作用范围 (作用域) 默认值
全局变量 整个的类 在不赋值时,是有默认值.
- 比较 作用范围 (作用域) 默认值
- 局部变量 从定义变量开始到所在的方法,if等结束 必须现赋值后使用,没有默认值
内存
内存分为5块:堆区,栈区,方法区,本地方法区,寄存器
java将内存分成了5块儿,分别是堆区,栈区,方法区,本地方法区,寄存器
* 栈区:里面存放数据的特点是:先进后出,我们主要将局部变量和函数放在栈区,数据的特点是使用完立刻释放 * 堆区:存放的是实体(对象和数组),实体可以同时存放多个值,实体里面的变量如果不赋值,会有默认值.整型数据默认值是0,boolean---false * * 了解: * 堆区中的数据会在某个时刻被释放-通过垃圾回收机制. * 垃圾回收机制是通过一个线程控制的,由于这个线程的等级比较低,所以不会立刻执行,数据就不会立刻释放.
重载
同名函数,类型,位置,个数不同是重载。与返回值,参数名字无关。
对于函数:java内部识别时,真正识别的是函数名字+参数类型的列表 例如: sum_int_float
- 函数的重载:在同一个类中,方法名相同,参数不相同的方法的关系
- 注意点:
- 1.参数的个数不同是重载
- 2.参数的类型不同是重载
- 3.参数的位置不同是重载
- 4.重载与返回值无关
- 5.重载与参数的名字无关
- 6.重载的方法本质上还是不同的方法.