基本内容
注释
分为三种,分别为:
-
单行注释
格式://注释
-
多行注释
格式:/* 注释 */
-
文档注释
格式:/** 注释
关键字
在idea中关键字的颜色都与其他不一样,并且关键字全为小写
变量
###基本类型
基本类型 | 说明 |
---|---|
int、byte(字节型)、long、short | 整形 |
float、double | 浮点型 |
char | 字符型 |
boolean | 布尔型 |
数据类型前添加final
关键字代表这是一个常量
final int a = 2;
//此时a是一个常量,并且a的值无法被修改
包裹类型(包装类)
类型名 | 包裹类型 |
---|---|
char | Character |
int | Integer |
boolean | Boolean |
double | Double |
除了char
要变Character
,int
要变Integer
之外,其他的包裹类型仅首字母变大写
包裹类型与普通类型差别不大,但能做一些特殊的事
例如求某个类型的最大值
Integer a = 0;
System.out.println(a.MAX_VALUE);//求整型的最大值
//或者直接
System.out.println(Integer.MAX_VALUE);//求整型的最大值
在Character
中,可以调用对象中的某些方法,例如判断是不是数字、字母等
数据类型的转换
基本数据类型转包装类
包装类型 变量名 = new 包装类型(值);
包装类型 变量名 = new 包装类型(字符串);
包装类型 变量名 = 值;
除了Boolean
之外,其他类型使用字符串的构造器进行实例化时,字符串中不能含有无关的字符,否则会抛出异常
Boolean
比较特殊,无论大小写,只要含有true的相关字符都为true,含有其他字符都false
包装类型转基本数据类型
基本数据类型变量 = 包装类型变量;
基本数据类型变量 = 包装类型变量.基本数据类型名Value();
#####自动装箱与拆箱
JDK 5.0之后 包装类型可以直接赋值,不用再用new,此时为自动装箱
直接使用包装类型变量做运算,称为拆箱
基本数据类型和String之间的转换
parseXxx方法:中文为 解析,pɑːrs
转字符串
String s = 基本数据类型 + "";//基本数据类型加空串
String类型的变量 = String.valueOf(值);//该方法有多个重载,适合所有的基本数据类型
字符串转其他类型
变量 包装类型.parse首字母的大写的基本数据类型(字符串);
使用new
的包装类型不能直接判等,因为此时当作对象进行处理,判等是对比的地址值
使用=
进行赋值的包装类型理论上也不能直接判等,但Integer
类型在数值范围-128 - +127
的范围内可以进行判等
用大括号括起来的叫做代码块,格式
{
}
代码块内的变量均为局部变量,仅在代码块内有效
Integer类中进制转换
进制转换都返回String
类型,都为静态方法,都是十进制转其他进制
Integer.toBinaryString(int x)
十进制转转二进制
Integer.toOctalString(int x)
十进制转转八进制
Integer.toHexString(int x)
十进制转转十六进制
数据类型转换
分为
-
自动(隐式)类型转换
一般为提升变量类型,小类型自动转化为大类型
-
强制(显式)类型转换
为手动转换
转换格式:类型 变量=(类型)数据
例如
System.out.println((double)num);
强制类型转换仅针对最近的变量/值有效,如果想要对多个值有效需要加括号
标识符
可以由 大小写字母、下划线_、美元符号$组成
同样也不能用数组开头
运算符
与C一致,包括关系、算数、逻辑、三目等
自增自减与C也基本保持一致
但多了一个单目取正和单目取负
a + -b;//相当于b取负值后再和a相加
a + +b;//相当于b取正值后再和a相加
逻辑运算符
&&
||
!
基本输入
scanner
使用之前需要导入包
####导入语句
import java until Scanner;
####创建录入对象
Scanner sc=new Scanner(System.in)
####接收数据
int i=sc.nextInt();
####输入代码
//导入包
import java.util.Scanner;
public class io {
public static void main(String[] args) {
//创建录入对象
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
System.out.println("i:"+i);
}
}
Scanner
中的next()
相当于读到空字符为止,nextline()
读一行,遇到回车为止
选择结构 if
浮点数之间的判等是有误差的,可以使用一个比较小的数进行判断
(Math.abs(a-b) < 1e-6)
if...else
中可以不加花括号,也是与最近的进行匹配
与C一致
switch语句
与C基本一致,但允许case后跟字符串和枚举类型
循环
while、do...while、for
break标号:可以直接跳出多层循环,用法如下
biaohao:for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
if(j==1&&i==2)
break biaohao;//跳出标号那个循环
}
增强型的for循环
for(类型 变量名 : 序列)
随机数种子(Random)
使用步骤:
-
导入包
import java.util.Random
-
创建Random对象
Random bianliang1=new Random
-
获取随机数
bianliang=bianliang1.nextInt(n)
n代表生成的随机数的范围,范围是0-n-1
方法(函数)
格式
修饰符 返回值类型 函数名(类型 参数,类型 参数){
//语句
返回语句;
}
例如
public static int hanshu(int x,int y){
yuju;
return x+y;
}
其中的public static
为修饰符
函数(方法)不允许嵌套定义e
函数/方法中的变量声明时没有默认值,类中的成员变量声明时有默认值,一般的数据类型的默认值为0,boolean
的默认值为false
,方法的默认值(不new的时候)为null
重载
同一个类中多个函数(方法),名字相同,参数列表不同,重载与返回值的类型无关
要函数(方法)重载的原因:
来解决实际开发中遇到功能相同,但类型、实现方式、参数不同的问题
不允许参数一样的函数重载
数组
定义
-
数据类型[] 数组名=new 数据类型[长度]
new是创建数组的关键字,通过new开辟内存空间
定义长度为3的int型数组
int[] arr=new int[3];
-
数据类型[] 数组名=new 数据类型[]{元素1,元素2....元素n}
int[] arr=new int[]{1,2,3};
-
数据类型[] 数组名={元素1,元素2...元素n};
int[] arr={1,2,3};
若数组未赋初值,则数值默认为0数组可以是变长数组,数组的大小可由变量指定
public class fors {
public static void main(String[] args) {
int[] arr=new int[3];//方法1
int[] arr2=new int[]{1,2,3};//方法2
int[] arr3={1,2,3};//方法3
}
}
####获取数组长度
获取数组的长度可用length
用法:数组名.length
数组是引用类型
与C语言一致,数组作为参数传递时传递的是地址
Math类
Math
类就是数学类
impor
四舍五入Math.round(浮点数)
0-1之间的随机数Math.random()
String类
String
是字符串类,是字符串的管理者,而不是所有者
字符串的赋值a = b相当于a与b同时管理这个字符串,相当于同时管理
由于这个特性,字符串不能够直接判等的,判等使用字符串.equals(字符串)
equals,判等,ikwәls
方法 | 含义 |
---|---|
s1.compareTo(s2) | 比较大小,第一个大返回正值,第二个大返回负值,相等返回0,kəmˈper ,比较 |
s1.length() | 求长,长度为0时抛出异常 |
s1.charAt(数字) | 取出数字出的下标值 |
s1.substring(开始位置,结束位置) | 取子串,只有1个值时,从开始位置取到末尾 |
s1.indexOf(字符串,开始位置) | 从开始位置查看字符串是否是s1的子串,如果存在,返回开始位置,不存在返回-1,开始位置可以省略,默认为0,lastindexOf反向进行比较 |
s1.equals(串) | 两串判等 |
s1.startsWith(串) | 串是否在末尾 |
s1.endsWith(串) | 串是否在开头 |
s1.trim() | 返回删掉两端空格的值 |
s1.replace(串1,串2) | 返回把s1中的所有串1都换成串2后的串,rəˈplās ,代替 |
s1.toLowerCase() | 返回s1都变小写字母后的值 |
s1.toUpperCase() | 返回s1都变大写字母后的值 |
创建
String s;
s = "hello";
String s = "hello";
String s = new Stirng("hello");
###连接
可以使用+=
进行连接
当等号的右边是整形或者浮点型时,先将其转换为字符串再连接
String s;
s = "hh";
s += "google" + 8 + 8;
System.out.println(s);
此时的8+8作为字符串进行处理的
输出结果为:hhgoogle88
Arrays类
ə'reɪz
,中文含义 数组,arrays
要想使用Arrays
类,首先先导包,即
import java.util.Arrays;
方法 | 含义 |
---|---|
Arrays.equals(数组1,数组2) | 比较数组1和数组2是否相等 |
Arrays.toString(数组) | 用字符串表示数组,返回字符串 |
Arrays.fill(数组,值) | 用值来填充整个数组 |
Arrays.sort(数组) | 将数组进行从小到大排序 |
Arrays.binarySearch(数组, 键) | 将排好序的数组进行二分查找,返回所在下标,未找到返回负数 |
比较
int[] a = {1,2,3}, b = {1,2,3,3};
System.out.println(Arrays.equals(a,b));
表示数组
System.out.println(Arrays.toString(a));
输出内容[1, 2, 3]
ArrayList类
ArrayList类是一个动态数组类,特点是数组长度不定,可以随意的添加、删除元素
实例化:ArrayList<包裹类型/类名> 变量名 = new ArrayList<类型>
尖括号中不能放入基本类型,可以放入包裹类型和类名
方法 | 含义 |
---|---|
a.add(值/对象) | 将值/对象添加到a中 |
a.remove(下标/对象) | 删除下标处的值或者相关对象,如果删除一个不存在的值或者对象会抛出异常 |
a.contains(对象) | 查看某个对象是否在数组中 |
a.isEmpty() | 数组是否为空 |
a.indexOf(对象) | 返回对象的下标 |
a.size() | 返回a的大小 |
a.get(下标) | 获取下标处的值 |
栈、堆、方法区
栈用来存放局部变量
堆用来存放new
出来的对象、数组
方法区用来存放类的加载信息、静态域、常量池
Q.E.D.