注释
单行注释://
多行注释:/* */
文档注释:/** */
字面量
变量
关键字,标识符
进制
二进制 0B/0b
八进制 0
十六进制 0X/0x 开头
数据类型
long类型后面要加 L/l
float类型后面要加 F/f
long a = 23112879182738179L;
float b = 678.08f;
表达式的自动类型转换
强制类型转换
数据类型 变量2 = (数据变量)变量1、数据
int a = 20;
byte b = (byte)a;
int i = 1500;
byte j= (byte) i; //溢出
double m = 99.5;
int n = (int) m;//丢掉小数部分
快捷键: Alt+Enter;
- 强转可能造成数据丢失(溢出);
- 浮点型强转整型,直接丢掉小数部分,保留整数部分返回
运算符
+,-,*,/,%。
Tips: 做除法时乘个1.0让int变Double
“+” 可以做连接符(字符串运算时);
自增自减运算符
赋值运算符
扩展的赋值运算符自带强制性类型转换;
关系运算符
逻辑运算符
三元运算符
运算符优先级
System.out.println(13>5 || 20>3 && 1>3);
// True
程序流程控制
分支Branch:If Switch结构
条件是区间,使用if,条件是值,使用switch。
switch格式更好,性能较好,代码优雅。
不用double是因为double计算值不精确。
循环结构Loop
For
优点:
减少代码重复编写,灵活控制程序执行。
批量生产数据
while
do-while
应用场景:抢票,先抢再判断。
死循环 Endlessloop
while是经典写法。
开发场景:服务器程序。
循环嵌套
跳转关键字
开发场景:
找数据用break直接结束;
找指定数据删除用continue;
随机数
数组
静态初始化数组
其中
”【“代表数组
”I“代表int ”D“代表double
”@“在哪个地址
”776ec8df“16进制地址信息
数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型。
数组的访问:数组名【索引】
数组的长度:数组名.length
数组的最大索引=数组名.length-1 (前提是数组中存在数据)
快捷键:
-
遍历:数组名.fori
-
输出:数组名【索引】.sout
例:ages.fori
ages[i].sout
动态数组
业务场景:
动态初始化:适合开始不确定具体元素值,只知道元素个数的业务场景。(比如评委打分)
静态初始化:适合一开始就知道要存入哪些元素值的业务场景。(比如周一到周日的信息)
Java内存分配
引用类型变量里面存储的 是堆的地址值
- 如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象
可以输出这个变量,但是不能用这个数组变量去访问数据或者访问数组长度,会报错空指针异常:NullPointerException.
方法 Method
方法运行原理
Java的参数传递机制
- 基本类型的参数传递是值传递
即在传输实参给方法的形参时,传输的是实参变量中储存的值的副本。
实参:方法内部定义的的变量
形参:定义方法时“(...)”中声明的参数。
形参和实参的区别和联系
\1) 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。
\2) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。
\3) 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。
\4) 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。
- 引用类型的参数传递
引用类型的参数传输存储的地址值。
方法重载
一个类中,出现多个方法名称相同,但是他们的形参列表是不同的,那么这些方法就称为方法重载了。
应用场景:为处理一类业务,提供多种解决方案,此时用方法重载。
return关键字
return; 可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行。
break; 跳出并结束当前所在循环的执行。
continue; 结束当前所在循环的当此继续,进入下一次执行。
面向对象
this关键字
this就是一个变量,可以用在方法中,来拿到当前对象。(哪个对象调用方法,this就指向哪个对象,也就是拿到哪个对象)。
this应用场景:
主要用来解决:变量名称冲突问题。
即解决对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题的。
this可以 指定访问当前对象的成员变量。
即给成员方法自动加了一个 this参数。来调用对象
关于this关键字的使用:
1、this的单独使用:
(1)每实例化一个对象就会实例化一个this。
(2)this是一个对象中隐藏的引用变量,它保存了当前对象的内存地址,指向自身。
(3)this存储在堆内存当中对象的内部。
(4)this只能使用在实例方法中。谁调用这个实例方法,this就是谁。显然静态方法中不能使用this,因为静态方法的调用不需要实例化对象的参与。
(5)this大部分时候可以省略,在实例方法中,或者构造方法中,为了区分实例变量与局部变量,这种情况下,this不能省略。
2、this()的使用:
新语法,如果当前的构造方法区调用另一个本类中的构造方法时,可以使用this(参数列表),也就是当前构造方法的代码和被调用的构造方法里的代码类似时,在当前构造方法中使用this(参数列表),实现代码复用。
注意:在构造方法,this()只能出现的第一行,并且每个构造方法中最多只能有一个this()。
————————————————
版权声明:本文为CSDN博主「pipizhen_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pipizhen_/article/details/107164439
构造器
构造器的特征:
- 它具有与类相同的名称
- 它不声明返回值类型(与声明为void不同)
- 不能被static、final、synchronized、abstract、native修饰,不能有return返回语句
构造器的作用:
创建对象;给对象进行初始化
语法格式
修饰符 类名(参数列表){初始化语句;}
封装
面向对象的三大特征:封装、继承、多态;
封装:
就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,已经处理这些数据的方法,设计到一个对象中去。
封装的设计规范:
合理隐藏、合理暴露;
修饰符:public 、private
实体JavaBean(实体类)
实体类:一种特殊形式的类。
定义:
- 这个类中的成员变量都要私有,并且要对外提供相应的getXxx,setXxx方法
- 类中必须要有一个公共的无参的构造器。
特点:用来保存某个事物的数据。
应用场景:
实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和业务数据处理相分离。
成员变量(field)与局部变量的区别
常用API接口
包
包:分门别类管理各种不同的程序
语法格式
package com.SameS.javabean;
public class Student{
}
在自己程序中调用其他包下的程序的注意事项
- 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
- 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式:import 包名.类名;
- 如果当前程序中,要调用Java提供的程序,也需要先导包才可以使用;但是Java.lang包下的程序是不需要我们导包的,可以直接使用。
- 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
String
概述:
- 可以用来创建对象封装字符串数据,并对其进行处理。
- 方式一:直接使用双引号 "..."。
- 方式二:new String类,调用构造器初始化字符串对象。
String s1 = "luo";
String s2 = new String();
String s3 = new String("SameS");
char[] chars = {'a','luo','wen'};
String s4 = new String(chars);
byte[] bytes = {97,98,99};
String s5 = new String(bytes);
// s5==abc;
String 常用方法
String 注意事项
- String对象的内容不可改变,被称为不可变字符串对象。
- 只要是以 "..." 方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只储存一份;
- 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
ArrayList 集合
数组定义完成并启动后,长度就固定了。集合大小可变。
ArrayList是集合中常用的一种,Array List是泛型类,可以约束存储的数据类型。
怎么使用:
创建对象,调用无参数构造器初始化对象:public ArrayList();
调用相应的增删改查的方法
开发中例如购物车
要求:
创建对象
增删改查的方法
其他特点
常用方法:
从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出bug?
- 方法一:每次删除一个数据后,索引-1;
- 方法二:从集合后面比哪里然后删除,可以避免漏掉元素。
arrays类
java.util.Arrays
Arrays类中的方法都是Static 修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用。
功能:
- 给数组赋值:fill
- 对数组排序:sort
- 比较数组:equals
- 查找数组元素:binarySearch 二分法搜索
- 打印数组:toString