Java语言基础
<1>Java概述:
1.Java语言的跨平台原理
Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。
2.与Java运行环境有关的名词
JVM(Java Virtual Machine),Java虚拟机
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具总结:使用Java进行开发时,只需安装JDK即可,它包含了java的运行环境和虚拟机。
3.Path环境变量的作用
开发Java程序,需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的 bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。
配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
4.Java中数据类型分为两类:
基本数据类型(整数类型、浮点类型、字符类型、布尔类型)
和 引用数据类型。
5.变量:
在程序运行过程中,其值可以发生改变的量。
从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。
6.类型转换:
自动类型转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如:double d = 10;//将int类型的10直接赋值给了double类型
强制类型转换:
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
<2>基础语法:
1.算数运算符:
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型。
等级顺序:byte,short,char --> int --> long --> float --> double
2.逻辑运算符与短路运算符之间的区别:
逻辑与&、逻辑或|:在进行运算时,无论左边真假,右边都会执行;
短路与&&:如果表达式左边为真,则右边执行下去;如果左边为假,右边直接短路(短路的意思就是跳过不执行了);
短路或||:如果表达式左边为假,则右边执行下去;如果左边为真,右边直接短路;
<3>Idea开发工具:
1.Idea开发工具中的一些好用的快捷键:
——快速生成main方法:psvm,回车
——快速生成输出语句:sout,回车
——快速生成构造方法,get()方法,set()方法:Alt键+Insert键
——内容提示,代码补全:Ctrl键+Alt键+space键
——单行注释:Ctrl键+/
——多行注释:Ctrl键+Shift键+/
——一键将代码格式调整规范:Ctrl键+Alt键+L键
<4>数组:
1.静态初始化与动态初始化
<5>方法:
1.
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
注意:
方法必须先创建才可以使用,该过程称为方法定义
方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程称为方法调用
2.方法不可以嵌套定义
3.方法重载:
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载:
——多个方法在同一个类中
——多个方法具有相同的方法名
——多个方法的参数不相同(类型不同或者数量不同)
注意:
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关
4.
——基本数据类型的参数,形式参数的改变,不影响实际参数的值;
依据:每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会出栈消失
——引用数据类型的参数,形式参数的改变,影响实际参数的值;
依据:引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法运行结束后出栈,堆内存中的数据也已经是改变后的结果
<6>Debug:
1.debug:
是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
<7>面向对象:
1.类:
类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
2.类与对象的关系:
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
对象:是能够看得到摸的着的真实存在的实体
3.
类的组成是由属性和行为两部分组成
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(不带static关键字)
4.成员变量和局部变量的区别:
——类中位置不同:成员变量(类中方法外);局部变量(方法内部或方法声明上)
——内存中位置不同:成员变量(堆内存);局部变量(栈内存)
——生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失);局部变量(随着方法的调用而存在,随着方法的调用完毕而消失)
——初始化值不同:成员变量(有默认初始化值);局部变量(没有默认初始化值,必须先定义,赋值才能使用)
5.封装:
private是一个修饰符,可以用来修饰成员(成员变量,成员方法)
被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,需要提供相应的get()、set()方法来进行操作
6.this关键字:
this修饰的变量用于指代成员变量,主要作用是区分局部变量和成员变量的重名问题
7.封装思想:
——封装概述:是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
——封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
——封装好处:通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
8.构造方法:
构造方法的创建:如果没有定义构造方法,系统将给出一个默认的无参数构造方法 如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载:如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
<8>API
1.API的定义:
API (Application Programming Interface) :应用程序编程接口
——java中的API:指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
2.String类:
String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。
String类的特点:
——字符串不可变,它们的值在创建后不能被更改
——虽然 String 的值是不可变的,但是它们可以被共享
——字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )
3.创建String对象两种方式的区别:
——通过构造方法创建:通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
——直接赋值方式创建:以“xxx”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
4.字符串的比较:
“==”在比较基本数据类型时,比较的是具体的值
“==”在比较引用数据类型时,比较的是对象的地址值
所以我们如果想比较两个字符串的值是否相同,需要用到String类中的equals()方法
5.StringBuilder类:
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
6.StringBuilder对象与String对象的相互转换:
为什么要相互转换呢,因为StringBuilder类中有两个非常好用的方法,append()方法可以添加数据,并返回对象本身。reverse()方法可以返回相反的字符序列。这两个方法非常方便操作字符串,是String类中没有的。
——StringBuilder转换为String:public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
——String转换为StringBuilder:public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
<9>ArrayList集合
1.
什么是集合:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
ArrayList集合的特点:底层是数组实现的,长度可以变化
泛型的使用:用于约束集合中存储元素的数据类型