JAVA编程基础复习

Java入门

Java概述

计算机语言总的来说可以分成三类:
机器语言:计算机可以识别的语言,二进制编码。
汇编语言:英文缩写的标识符。
高级语言:接近人类自然语言,Java就是一种高级语言。
Java划分为三个技术平台,Java SE 开发普通桌面和商务应用程序,Java EE开发企业级应用程序,Java ME开发电子消费产品和嵌入式设备。

Java语言的特点

简单易用
安全可靠
跨平台
面向对象
支持多线程
自动进行垃圾回收

Java工作原理
  • Java开发环境,简称JDK,Java运行环境,简称JRE,开发环境包含运行环境。JDK包括JRE和开发工具。JRE包括Java基础类库和JVM。
    Java 源程序的后缀是 .java;编译后的字节码后缀是 .class。
  • 系统环境变量:PATH环境变量用于告知操作系统到指定路径去寻找JDK,
    CLASSPATH环境变量用于告知JDK到指定路径去查找类文件。
    path环境变量用来存储Java的编译和运行工具所在的路径,而classpath环境变量则用来保存java虚拟机要运行的“.class”文件路径。
    变量名:JAVA_HOME 变量值:jdk的路径
    变量名:CLASSPATH
    变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    加一个(.)来识别当前目录下的Java类。从JDK5开始,可以不用配置会自动加载。%JAVA_HOME%表示JAVA_HOME的当前值。
    Path存放JDK和JRE的bin目录,%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    Javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin目录下。
    每个 Java 源文件的命名必须是文件中 public 修饰的类的名字
    编译的命令是 javac;执行的命令是 java。
    有几个类编译后就生成几个class文件
    API 是一些源码。JVM 可以解释并执行 java 程序。

Java编程基础

Java程序的结构
  • 至少包含一个类
  • 只能有一个公共类,一旦有公共类必须与文件名一致。
    用public修饰的类名要与文件名一致,并且只能有一个。
Java基本语法格式和注释

Java语言严格区分大小写,Java程序中一个连续的字符串不能分开在两行中书写(如果要分开用+连接)。
\单行注释、/多行注释/和/** 文档注释 */是java中有且仅有的三种注释。
多行注释可以嵌套单行注释,多行注释不能嵌套多行注释,一般不使用注释的嵌套。

标识符

标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,也不能是Java中的关键字,不能与JDK中的类同名。
String也属于标识符。
if else是关键字。
标识符规范:
包名字母一律小写,域名倒写。
类名接口名单词首字母大写
常量名所有字母都大写,单词之间用下划线连接
变量名和方法名用驼峰命名法

Java中的变量与常量
数据类型

数据类型包括基本数据类型和引用数据类型。

  • 基本数据类型:整数类型(byte,short,int,long)浮点类型(实型)(float,double),字符型(char),布尔型(boolean)
    引用数据类型:类(class),接口(interface),数组,枚举(enum),注解(Annotation)。
    在为一个long类型的变量赋值时,所赋值的后面要加上一个字母L(l),说明赋值为long类型(如果赋的值未超出int型的取值范围可以省略)。
    Java中,小数默认为double类型的值,为一个float类型赋值时要在后面加上F或者f,double类型的值d可以省略。
    char类型变量用于存储一个单一字符,char c=‘a’; char ch=97;实现同样效果。不能是空的单引号,String可以是空的。可以是空格’\0’。
    布尔类型用true和false,不能用01表示。
    引用数据类型的名称实际代表的是存放数据的地址,不是数据本身,基本数据类型反之。因此,引用类型的数组,其数组元素依旧是地址;而基本类型的数组,其数组元素是数据本身。

  • byte 占1个字节 8位
    short 占2个字节 16位
    int 占4个字节 32位
    long 占8个字节 64位
    float 4个字节
    double 8个字节
    char 2个字节
    Java的字符类型采用的是Unicode编码方案,每个Unicode码占用16个比特位。

数据类型的转换

类型转换分为自动类型转换和强制类型转换。
当数据类型取值小的赋值给数据类型取值大的时候,系统会把取值范围小的数据类型自动转换为数据类型大的。
byte–>short>>int>>long>>float>>double
######char>>int>>long>>float>>double
强制类型转换:目标类型 变量名=(目标类型) 值;
强制类型转换可能会造成数据精度的丢失。
表达式类型自动提升:变量在表达式中进行运算时,也有可能发生自动类型转换。byte、short、char类型的变量在运算期间类型会自动提升为int,然后再进行运算。
Java中的常量:final 常量类型 常量名 [=初始值];

public class LanQiao {
public static void main(String[] args) {
byte a = 11;
byte b = a + 11;
System.out.println(b) ;
}
}

编译错误
byte 和字面整型值11相加时,会自动转为 int 类型。int 赋值给 byte 时必须进行强制类型转换。
为一个float类型的变量赋值,后面必须加上字母f
boolean类型不参与转换
byte,short,char  int  long  float  double
byte,short,char之间不相互转换,直接转成int类型参与运算。
String 不是基本数据类型;基本数据类型分别是 short、int、long、char、boolean、float、double、byte。
Java的字符类型采用的是Unicode编码方案,每个Unicode码占用16个比特位。
JAVA编程基础复习_第1张图片

常量
  • 表示形式:
    8进制:0开头
    16进制:0X开头
    科学计数法:
  • 符号常量:用一个标识符代表一个常量,称为符号常量。
Java中的运算符

Java中的运算符分为算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和条件运算符。

算术运算符:

/ 除(算术中整除的结果)
%取模(算术中的求余数)
++自增 --自减

赋值运算符:

一条赋值语句可以为多个变量进行赋值:

int x,y,z;
x=y=z=5;
int x=y=z=5;
//这样写是错误的,没有事先声明yz的数据类型

^(异或)是针对二进制的二目运算符。运算规则:两个二进制数值如果在同一位上相同,则结果中该位为0,否则为1,比如1011 & 0010 = 1001。
比较运算符用于对两个常量或变量的大小进行比较,其结果是一个布尔值,即true或false。

逻辑运算符

逻辑运算符用于对布尔类型的值或表达式进行操作,其结果仍是一个布尔值。逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。使用&时,不论左边为true或者false,右边的表达式都会进行运算。如果使用&&进行运算时,当左边为false时,右边的表达式不会进行运算,因此&&被称作短路与||同理。运算符^表示异或操作,两边布尔值不同时为true,布尔值相同时为false。

位运算符

位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。
左移运算一律在右端补0,右移运算一律在左端补符号数(负数符号位为1就补1,正数符号位为0就补0)
负数是不能在原码的基础上进行操作的,需要首先转化成补码才能进行移位运算,并且运算的结果并不是直接结果,还是需要将其转化为原码才能当做运算结果输出!
在计算机内存当中,负数一律按照补码的形式进行存储,负数的原码进行按位取反加一的操作,即进行求补码的操作;特别注意,符号位不参与变化
当需要将负数从内存当中取出的时候,首先需要将补码转化成原码,转变规则为对当前的补码取反加一(其中符号为不参与变化)。
左移n位就是乘2的n次方
右移n位就是除以2的n次方

条件运算符

?:基本等价于选择结构语句if…else,?前表达式为true时执行:前的内容,表达式为false时执行:后的内容。
三目运算符:(表达式1)?(表达式2):(表达式3),当表达式1的结果为真时,整个运算的结果为表达式2,否则为表达式3。

数组
一维数组

数组定义方式:

数组类型[] 数组名 =new 数组类型[数组长度];
数组类型[] 数组名 =new 数组类型[]{数组元素0,数组元素1,…};
数组类型[] 数组名 ={数组元素0,数组元素1,…};

数组没有赋值有默认值,数值型默认0,char默认一个空字符,即’\u0000’,
boolean默认false,引用数据类型默认null,表示变量不引用任何对象。
可以通过 数组名.length的方式获取数组的长度。
nums 数组的第一个元素是 nums[0],最后一个元素是 nums[nums.length-1]。
如果数组不在0和 nums.length-1之间的区间,就会报ArrayIndexOutOfBoundsException 异常。
在每一趟比较时,都能选出一个最小值(或最大值)的是冒泡排序。

二维数组
int[][] arr=new int[3][4];//定义了一个3*4的二维数组,三行四列
int[][] arr={{1,2},{3,4,5,6},{7,8,9}};
int[][] arr=new int[3][];//此时不能访问a[0][0]
a[0]=new int[3];
a[1]=new int[2];
a[2]=new int[5];

创建二维数组的时候,可以同时设置第一维长度和第二维长度,也可以只设置第一维长度,但不可以只设置第二维长度。

数组遍历
for (int x : arr) {   
         System.out.println(x); //逐个输出数组元素的值   
程序的结构

switch()括号中的值可以是整型数值,字符,字符串。
do{ } while();需要有分号
while()语句中条件只能是true或false;
break,continue是程序跳转语句,case不是程序跳转语句。
方法三要素:方法名,类型,参数。
有返回值的方法用赋值表达式。
输入语句:

Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();//输入一个整数
        String a = scanner.next();//输入字符串
        System.out.println(a);

JAVA编程基础复习_第2张图片

String 可以使用“==”进行比较,但 StringBuffer 不行。
可以将多个 Java 类写在一个 Java 文件中,但其中只有一个类能用 public 修饰,并且这个 Java 文件的名称必须与这个类的类名相同。
方法重载的要求是参数列表不同。具体包括以下三种情形。
①参数的数量不同。
②参数的类型不同。
③参数的顺序不同。
如果在定义类时没有定义构造方法,编译系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。如果在定义类时定义了有参的构造方法,没有显式地定义无参的构造方法,那么在使用构造方法创建类对象时,则不能使用默认的无参构造方法。
使用 this 调用构造方法时, this 必须写在构造方法的第一行。因此在构造方法中,不能同时使用this调用多个构造方法。
对象的初始化过程遵循的顺序是:
①实例化对象时,成员变量初始化为默认值。
②将成员变量赋为定义类时设置的初值。
③通过初始化块给成员变量赋值
④调用构造方法时,使用构造方法所带的参数初始化成员变量
单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
java.lang 包是 Java 默认会导入的包,可以省略。

你可能感兴趣的:(java)