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.重载的方法本质上还是不同的方法.