基本内容

注释

分为三种,分别为:

  1. 单行注释

    格式://注释

  2. 多行注释

    格式:/* 注释 */

  3. 文档注释

    格式:/** 注释

关键字

在idea中关键字的颜色都与其他不一样,并且关键字全为小写

变量

###基本类型

基本类型说明
int、byte(字节型)、long、short整形
float、double浮点型
char字符型
boolean布尔型

数据类型前添加final关键字代表这是一个常量

final int a = 2;
//此时a是一个常量,并且a的值无法被修改

包裹类型(包装类)

类型名包裹类型
charCharacter
intInteger
booleanBoolean
doubleDouble

除了char要变Characterint要变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)十进制转转十六进制

数据类型转换

分为

  1. 自动(隐式)类型转换

    一般为提升变量类型,小类型自动转化为大类型

  2. 强制(显式)类型转换

    为手动转换

    转换格式:类型 变量=(类型)数据

    例如

    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)

使用步骤:

  1. 导入包

    import java.util.Random

  2. 创建Random对象

    Random bianliang1=new Random

  3. 获取随机数

    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

重载

同一个类中多个函数(方法),名字相同,参数列表不同,重载与返回值的类型无关

要函数(方法)重载的原因:

来解决实际开发中遇到功能相同,但类型、实现方式、参数不同的问题

不允许参数一样的函数重载

数组

定义

  1. 数据类型[] 数组名=new 数据类型[长度]

    new是创建数组的关键字,通过new开辟内存空间

    定义长度为3的int型数组

    int[] arr=new int[3];

  2. 数据类型[] 数组名=new 数据类型[]{元素1,元素2....元素n}

    int[] arr=new int[]{1,2,3};

  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.


念念不忘,必有回响。