JAVA基础

170 阅读4分钟

Java应用程序的运行机制

  • 计算机高级语言的类型主要有编译型和解释型,Java是两种语言的结合.
  • Java首先利用文本编辑器编写Java源程序,源文件的后缀为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class;最后利用虚拟机(解释器.java)解释执行.

Eclipse

  • 使用Eclipse创建一个类以后,会自动在项目下的bin目录里面生成.class编译文件

变量

  • 变量的本质是代表一个"可操作的存储空间",空间位置是确定的,但是里面放什么值不确定的,就是停车位是固定的,停什么车不固定的.
  • Java是一种强类型语言,每个变量都必须声明其数据类型.
  • 变量作为程序最基本的存储单元,其要素包括变量名,变量类型和作用域.

变量的分类

  • 局部变量(local variable)
    • 方法或语句块内部定义的变量.生命周期是从声明位置开始到方法或语句块执行完毕为止.
    • 局部变量在使用前必须先声明,初始化(赋值)再使用.
  • 成员变量(也叫实例变量member variable)
    • 方法外部,类的内部定义的变量.从属于对象,生命周期伴随对象始终.
    • 如果不自行初始化,会自动初始化成该类型的默认初始值.
  • 静态变量(类变量 static variable)
    • 使用static定义.从属于类,生命周期伴随类始终,从类加载到卸载.

常量

double和float

  • 精确计算

a++和++a

逻辑运算符

  • &和&&的区别:&会计算前后然后去比较;&&只要前面的是false就不计算&&后面的,直接返回false

条件运算符(三目运算)

运算符优先级

自动类型转换

  • 指的是容量小的数据可以自动转换为容量大的数据类型
  • 可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。
short  b = 12;  //合法
short  b = 1234567;//非法,1234567超出了short的表数范围

控制语句

  • 结构
    • if单选择结构

+ if-else双选择结构
    + if-else if和if-else的区别:if-else后面没有条件,不是真就是假;if-else if后面有条件判断,可以有另外的结果
+ if-else if-else多选择结构
+ switch结构(多值判断)
    switch case,遇到break退出否则一直往下执行,JDK1.7之后可以使用字符串

循环

  • while循环(先判断后执行)
    • 在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。

  • do while(先执行,后判断)

for循环

  • for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
for (初始表达式; 布尔表达式; 迭代因子) {
      循环体;
}

方法

  • 声明格式;
[修饰符1  修饰符2  …]   返回值类型    方法名(形式参数列表){
    Java语句;… … …
 }
  • 方法的调用方式;
    • 对象名.方法名(实参列表)
    • 1.形式参数:在方法声明时用于接收外界传入的数据;
    • 2.实参:调用方法时实际传给方法的数据;
    • 3.返回值:方法在执行完毕返还给调用它的环境的数据;
    • 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为void;

return

作用:

  • 1.方法结束;
  • 2.返回值

重载

  • 实际是完全不同的方法,只是名称相同而已!
  • 构成条件:
    • 不同的含义:形参类型,形参个数,形参顺序不同
    • 只有返回值不同步构成方法的重载

递归

  • 思想:自己调自己
  • 递归结构:
    • 定义递归头.解答:什么时候不调用自身方法.如果没有头,将陷入死循环,也就是递归的结束条件.
    • 递归体.解答:什么时候需要调用自身方法.
  • 递归的缺陷
    • 简单的程序是递归的优点之一.但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重.
  • 注意事项
    • 任何能用递归解决的问题也能使用迭代解决.当递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;
    • 在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存.