利用空闲时间 再次将java se基础 的巩固复习了一遍,下面这些是观看了网课教程 整理的知识点笔记
javac 是一个编译工具
java 是一个执行工具
java -version 命令能够查询jdk的版本
javac -version 命令可以查询java的信息
用来检验电脑是否配置java环境
盘名 加:(进入相应的盘根目录)
Path环境变量:用来记录程序路径,方便在命令行窗口中的任意目录下启动程序
在命令行窗口在首先会查找当前目录下的文件,如果查找不到会去寻找path中配置的程序路径
java在执行时首先会加载类,然后在执行内部的静态块,执行完静态块后在去调用main方法
自动类型转换
类型范围小的变量,可以赋值给范围类型大的变量
byte->short->int->long->float->double
强制类型转换
将类型范围大的变量,转换为类型范围小的变量
浮点型转换为整数时,小数点后面的小数为被自动去除
引用类型分3种:类,接口
一.类Class引用
可以是我们创建的,主要是讲解几个Java库中的类
Object:Object是一个很重要的类,是类层次结构的根类。
String:String 类代表字符串
同样也有对应的Class:Integer,Long
二.接口interface引用
几个常见的接口interface
List<E>:列表,此接口的用户可以对于列表中的每一个元素的插入位置进行精准的控制。用户可以根据元素的整数索引访问元素,并搜索列表中的元素。
对于List<E>列表常用的方法:
add():在列表的插入指定元素
remove():移除列表中指定位置的元素
get(int index):返回列表中指定位置的元素
Map<key,value>
K:映射所维护的健的类型
V:映射值的类型 将健映射到值的对象;每一个健最多映射到一个值
put(K key,V value):将指定的值于指定的健关联
基本数据类型和引用类型的默认值:
byte short int long 0
double float 0.0
boolean false
String(等引用类型) null
运算符:基本的算术运算符
进行算术运算符时,运算结果取运算中最高数据类型的形式。
在计算时 想要将进行整数算术运算的数据 结果是小数;
//int a=3;
int b=2;
int rs=a/b;//1
int rs1=(a*1.0/b);//1.5
//
加加减减是相当于变量而言,不能对常量进行加加减减
++、--放在前面和 后面有着不同含义
在前面先进行操作、后在进行算术运算
在后面先进行算术运算,再进行加减操作
赋值运算符
+= //先加后赋值
-+ //减后赋值
/= //整除后赋值
%= //取余后赋值
*= //乘后赋值
eg:
a+=b 先a+b后再将结果赋值给a,a=a+b;
关系运算符(对数据进行判断的符号,最终会返回一个比较的布尔类型 true,false)
== 判断是否两个的值是否相等,成立为true,否则为false
逻辑运算符
& 与运算符 两边的运算结果都是true时,结果才是true
| 或运算符 两边的运算结果只要一个是true,结果就为true
逻辑运算符是两边都要进行比较运算
短路逻辑运算符
&& 与运算符 只要左边的结果是为false,右边则不执行,结果就直接为false
|| 或运算符 只要左边的结果是为true,右边则不执行, 结果就直接为true
短路逻辑运算符是只需要判断单边的,效率比较高
switch分支
表达式类型只能是byte、short、int、char,不能支持double、float、long类型
case给出值不允许重复,且只能字面量,不能是变量
没有书写braek,会出现穿透现象(即不能跳出循环)
while循环语句格式
//
初始化语句;
while(循环条件)
{
循环体语句
迭代语句
}
//
当不确定循环次数时 用while循环语句
for(;循环条件;)等于 while的用法
经典死循环写法:
while(true)
{
}
跳出控制语句
break 跳出结束当前所在循环的执行
continue 跳出当前循环的当此执行,进入下一次循环
Random随机数
操作流程:
1.先导入包
import java.util.Random;
2.创建Random对象
Random r =new Random();
3.调用nextInt()方法
int data=r.nextInt(10) // (0-9)范围是包前不包后
//声明一个整型变量来接收 nextInt()随机数产生结果
方法的定义格式
修饰符 返回值类型 方法名(形参列表)
{
方法体代码;
return 返回值;
}
形参和实参
形参 是在方法定义时的变量
实参 是在方法内部定义的变量
java的参数传递
基本数据类型值传递:传递的是实参存储的值
引用类型的参数传递: 传递的是参数地址,改变的是地址上的值
方法的调用是在栈区(后进先出)
方法 是在调用时会放进栈区当中,当使用完该方法后,立即跳出并结束当前方法的执行
方法重载
在同一个类当中,方法名称相同,形参列表不同的,就是方法的重载
调用方法时 会根据方法参数的不同,来区分调用哪个方法
作用:方法重载 可读性好,方法名相同是指同一类型的功能,通过参数不同实现功能差异化的选择
识别方法重载
方法名相同,形参列表不同
形参列表不同指的是:形参的类型、个数、顺序,不关心形参的名称
eg. public static void add(int a,int b) and public static void add(int c,int d) 这两个方法是相同的,不是方法重载。
return 立即跳出并结束当前方法的执行
break 是跳出当前正在执行的循环语句
Interface(接口)
interface是在代码中使用的接口,是一种具体的语法规则,没有具体实现的抽象定义。(就是在该接口中声明的方法是不能实例化,让类
去继承这个接口,通过不同的类所需要的功能来重写实现这个方法。)
API(应用程序编程接口)
java写好的技术(功能代码),封装成一个接口,可以直接调用。
一.String 引用类型
String 其实常被称为不可变字符串类型,它的对象在创建之后不能被更改
String 变量每次修改都会指向新的字符串变量
原来的字符串变量对象是没有改变的,所以称为不可变字符串
String 的两种存储方式
以""方式给出的字符串对象,在字符串常量池中存储(字符串常量是存储在堆中),而且相同内容只会在其中存储一份(声明相同的字符串常量,在栈中,地址是相同的)
通过构造器new 对象,每new 一次会产生一个新的对象,存储在堆内存当中。(每new 一个对象的地址是不同的)
比较基本数据类型时使用"==";
字符串内容的比较不合适用"==";
equals :是只关心内容一样即可;
二.ArrayList集合
集合与数组类似是用来存取数据,也是一种容器。
数组特点:数组在定义后 类型确定,长度规定
问题:在个数不确定时,切进行增删数据操作的时候,数组是不适合的。
集合特点: 集合的大小不固定,可以动态变化,同时类型也是可以选择不固定。
集合优点:集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
ArrayList 在没有指明是存储哪种类型的泛型时,默认是object,可以存储任意一种引用类型。
ArrayList<E>: 泛型类,可以在编译阶段约束集合对象只能操作某种数据类型(集合中只能存储引用类型,不支持基本数据类型)
ArrayList常用的api:
public E get(int index) 获取某个索引位置处的元素值
public int size() 获取集合的大小(元素个数)
public E remove(int index) 删除某个索引位置处的元素值,并返回被删除的元素值
public E set(int index,E element) 修改某个索引位置上的元素值
当集合的泛型是自定义类型时,集合存储的元素不是对象本身,而是对象的地址。
javaBean:主要用来传递数据,即把一组数据组合成一个javaBean便于传输。
也可以理解为实体类,其对象可以用于在程序中封装数据
构造器的作用:初始化类的对象,并返回对象的引用地址
构造器有几种:1.无参构造器:初始化的对象时,成员变量的数据均采用默认值
2.有参构造器:初始化对象的时候,同时可以为对象进行赋值
构造器的注意事项:任何类定义出来,默认就自带无参数构造器,写不写都有的;
一旦定义了有参数构造器,无参构造器就没有了,此时就需要自己写无参数构造器
面向对象的三大特征:封装,继承,多态
封装:解决属性和方法属于哪个对象的问题
封装目的:如何正确设计对象的属性和方法
封装步骤:通常将成员变量私有,提供方法进行暴露
封装作用:提高业务功能设计的安全性,提高开发效率
对象代表什么,就得封装对应的数据,并提供对应的行为
创建对象的格式:引用类型 变量名=new 构造器();
类:是对象共同特征的描叙
类中可以定义的5大成分:成员变量,构造器,成员方法,代码块,内部类
格式:
修饰符 class 类名{
//1.成员变量Field:描述类或者对象的属性信息,如:姓名、年龄。
//2.成员方法Method:描述类或者对象的行为的
//3.构造器Constructor:初始化一个类的对象返回
//4.内部类:
//5.代码块:
面向对象的内存机制:
1.对象是放在堆内存中
2.new创建一个对象时,对象名中存储的是对象在堆内存中的地址
3.成员变量的数据存储在对象中,存于堆内存中
栈内存:一个类中的main方法是存储在栈中,创建对象首先会在栈当中分配一块内存空间,同时也在堆当中开辟一块对象的内存空间,
在栈中对象存储的该对象在堆中的引用地址,类的成员方法是存储在方法区,堆中对象的内存空间存储的是成员方法的引用地址。
当需要通过创建一个对象来调用类的方法时,首先访问的是栈中的对象内存空间,再通过对象的引用地址查找到该对象在堆中的位置。
堆中类的方法存储的是 此方法在方法区的引用地址,通过方法的引用地址 访问方法区中该方法具体的具体代码。
堆中的垃圾回收
注意:当堆内存当中的对象,没有被任何变量引用时,就会被判断为内存中的“垃圾”