java基础知识点(一)

一、java的基本流程

1.1、java语言特性

  • 简单性
  • 面向对象可移植性
  • 健壮性(自动垃回收机制,GC)
  • 多线程

1.2、java的加载与执行过程

在这里插入图片描述

1、编译阶段:
  • 首先,我们先创建一个java源文件xxx.java
  • 经过javac.exe编译(如果源文件没有语法错误),生成一个或多个.class文件,注意的是此时的字节码文件不是二进制的,无法在操作系统上执行。
2、运行阶段:
  • 当我们在命令窗口输入 java 类名 命令时,java.exe命令会启动JVM,JVM会启动类装载器ClassLoader.
  • ClassLoader(即类装载器)会去硬盘上查找字节码文件,然后将查找到的.class字节码文件装载到JVM中。
  • JVM再将.class字节码文件解释成二进制10001000这样的数据
  • 然后操作系统会执行二进制和底层操作系统进行交互。
  • 这样java的加载与执行就完成了

1.3、java内存主要划分

在这里插入图片描述

java的内存需要划分成五个部分:
  • 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。
    1、局部变量:方法的参数,或者是方法{}内部的变量
    2、作用域:一旦超出作用域,立从栈内存当中消失。

  • 堆(Heap):凡是new出来的东西,都在堆当中。
    1、堆内存里面的东西都有一个地址值:16进制
    2、堆内存里面的数据,都有默认值。规则:
          如果是整数类型:那么默认值为0
         如果是浮点类型:那么默认值为0.0
         如果是字符类型:那么默认值为\u0000
          如果是布尔类型:那么默认值为false
          如果是引用类型:那么默认值为null

  • 方法区(Method Area):存储.class相关信息,包含方法的信息。

  • 本地方法栈(Native Method Stack):与操作系统相关。

  • 寄存器(pc Register):与cpu相关。

二、java基本语法

2.1、变量、标识符、关键字、数据类型

1、变量
  • 定义:在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值
  • 注意:变量要先初始化以后才能使用
  • 测试:编译报错;变量可以重复赋值但是不能重复声明
    在这里插入图片描述
  • 变量的作用域:变量的作用域分为四个级别:类级、对象实例级、方法级、块级
    1、类级变量又称全局级变量静态变量,需要使用static关键字修饰,你可以与 C/C++ 中的 static 变量对比学习。类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。
    2、对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。
    3、方法级变量就是在方法内部定义的变量,就是局部变量
    4、块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了;如for、if语句块
  • 变量作用域说明
    1、方法内部除了能访问方法级的变量,还可以访问类级和实例级的变量;
    2、块内部能够访问类级、实例级变量,如果块被包含在方法内部,它还可以访问方法级的变量。
    3、方法级和块级的变量必须被显示地初始化,否则不能访问
2、数据类型
  • 基本数据类型:char、short、byte、int、long、float、double、boolean;字符串属于引用类型,因为String是一个类
    在这里插入图片描述
  • 示例:字符是单引号初始化,字符串时双引号初始化
    在这里插入图片描述
3、标识符
  • Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下:
    1、标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
    2、标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
    3、Java 区分大小写,因此 myvar 和 MyVar 是两个不同的标识符
    4、标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,而且不能赋予标识符任何标准的方法名
4、关键字
  • 定义:关键字(或者保留字)是对编译器有特殊意义的固定单词,不能在程序中做其他目的使用。关键字具有专门的意义和用途,和自定义的标识符不同,不能当作一般的标识符来使用。
  • 常用关键词
    1、数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
    2、流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
    3、修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
    4、动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
    5、保留字:true、false、null、goto、const。

2.2、运算符、控制语句

1、运算符
  • 算术运算符:+、-、*、/、++、–、%(取余)
  • 举例:下列代码中=的优先级要大于++;所以是先执行e=m,再执行m++
    在这里插入图片描述
  • 总结:++ 或者 – 出现在变量(m)的前面,则++ 或者 – 的优先级要大于=,先执行m++ 再执行 e = m;反之就先执行e = m,再执行m++
    在这里插入图片描述
  • 关系运算符:>、<、<=、>=、==、!= ; 运算结果一定是boolen类型
  • 布尔运算符:&、|、!、^、&&(短路与)、||(短路或)
  • 布尔运算规则:布尔运算符两边的算子都必须是布尔类型,整个布尔运算的最终结果也是一个布尔类型
  • 短路与(&&)和逻辑与(&)的区别:判断结果一致,有假则为假,全真则为真有假必假,全真为真);判断方式不一样,逻辑是从左到右全部判断,短路与是遇到false就停止
  • 短路或(||)和逻辑或(|)的区别:判断结果一致,有真则为真,全假则为假有真必真,全假为假);判断方式不一样,逻辑是从左到右全部判断,短路或是遇到true就停止
  • 赋值运算符:=、+=、-=、*=、/=、%=
  • 三目运算符: Boolen表达式?表达式1:表达式2;Boolen表达式为true就执行表达式1,为false就执行表达式2
  • 示例
    在这里插入图片描述
2、控制语句
  • 条件判断语句:if-else、switch
  • 循环:for循环、while
  • break:可以出现在循环里面,结束当前整个循环
  • continue:结束此次循环,但不结束整个循环,可以继续沿着下一次循环进行
  • return:结束当前整个函数的执行

2.3、java方法详解

1、方法重载必须满足下列条件
  • 在同一个类中
  • 方法名相同
  • 参数列表不同
  • 结论:方法重载和方法的返回类型和修饰符无关
2、方法执行的原理
  • 方法在调用的时候实际就是在栈中分配空间,方法的调用本质上就是入栈,方法的结束就是出栈
  • 栈溢出:当存在压栈时就会导致栈内存储溢出现象,俗称栈溢出;方法中一定要有结束条件,避免压栈现象
3、递归示例:求1-N的和
  • 递归时一定要避免压栈现象产生
 public static void main(String[] args) {
        int sum = add(10);
        System.out.println(sum);
    }

    public static int add(int n){
        if(n == 1){
            return 1;
        }else{
            return n + add(n-1);
        }
    }
  • 执行结果:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值