java基础知识

基础知识

Java三大版本:

  • JavaSE:标准版(桌面程序,控制台开发)
  • JavaME:嵌入式开发(手机,小家电)
  • JavaEE:企业级开发(web开发,服务器开发)

三个概念:

  • JDK(java development kit):Java开发者工具
  • JRE(java runtime environment):Java运行时环境
  • JVM(java virtual machine):Java虚拟机---->可以跨平台

一层包裹着一层,JDK>JRE>JVM。

记事本操作

  • 编写java程序,文件以.class结尾
  • 进入中端Terminal
  • 首先javac 文件名.class,对它进行编译,形成类字节码。
  • 然后运行已编译的文件 java 文件名。

注释

单行注释

//这是一个单行注释

多行注释

/*
这是
一个
多行
注释
*/

文档注释

/**
@author 小红
@version 版本号
*/

常用的:

  • @author 作者名
  • @version 版本号
  • @since 指名需要最早的jdk版本号
  • @param 参数名
  • @return 返回值的情况
  • @throws 异常抛出的情况

在终端该java文件目录下,输入以下命令,形成Java Doc文档

javadoc -encoding UTF-8 -charset UTF-8 文件名.java

点击目录下的index文件,即可看到生成的Java Doc文档(类似于Java API 界面)

基本数据类型

整数

整数类型的数据是一种数值型数据,是指那些没有小数部分的数值,可以为负数。

Java 语言定义了四种整数 类型:byte、short、int、long。

整数类型所占字节数数的范围
byte1-2⁷~2⁷-1
short2-2¹⁵~2¹⁵-1
int4-2³¹~2³¹-1
long8-2⁶³~2⁶³-1
  • int 类型是最常用的整数类型,Java 语言默认的整数类型就是 int 类型。
  • long 类型只有在 int 类型的长度无法满足需要的时候才使用,在使用 long 类型 时,数值后一般要加符号L。
  • byte 类型一般用来定义数组,可以看作一块存储区,可以用来存储数据。

进制:

  • 八进制整数用0开头
  • 十六进制整数用0X开头

浮点数

浮点类型的数据也是一种数值型数据,是指那些有小数部分的实数数值,可以采用科学计数法 表示很大的数。

Java 语言定义了两种浮点类型:float 和 double

类型存储需求取值范围
float4…(有效位数为6~7)
double8…(有效位数为15位)
  • Java 语言默认的浮点类型就是 double 类型
  • float 类型只在特殊需要时才使用,一般不用,数值后一般要加符号 F或f。

三个特殊的浮点数:

  • 正无穷(Double.POSITIVE_INFINITY)
  • 负无穷(Double.NEGATIVE_INFINITY)
  • NaN(Double.NaN)(不是一个数字,0/0或负数开根号的答案)

字符

Java中字符采用UTF-16,用两个字节来表示基本字符,4个字节来表示其他字符(如中文字符等等)

char和Unicode

码点:是指与一个编码表中的某个字符对应的代码值

码点采用十六进制书写,并加上U+

Unicode码点可以分为17个代码平面

第一个平面称为基本多语言平面,包括码点U+0000到U+FFFF的经典Unicode代码。

其他16个平面从U+10000到U+1FFFF,包括辅助字符。用一对连续的代码单元来表示(第一代码单元U+D800~U+DBFF,第二代码单元U+DC00~U+DFFF,这些代码单元基本多语言没有占用)。

boolean类型

boolean 型只有两个值true和false,true表示逻辑真,false表示逻辑假。

布尔型不能与数值型运算

类型转换

整数型、浮点型、字符型数据可以混合运算。

运算时,不同类型的数据先转换为同一种数据类型,然后再进行运算。
请添加图片描述
自动类型转换也叫隐式转换,是指数据类型由低级向高级的转换,这种转换是 Java 运行机制自动实现的,不需要程序干涉。

标识符

标识符是程序中各种要素的名称,作用是为了在一定的范围内唯一标识程序中的要素。

规则

5个规则:

  • 标识符由 4 种符号组成(字母、数字、_、$)
  • 数字不能开头
  • 大小写敏感
  • 没有长度限制
  • 不能是关键字和保留字

习惯

五个习惯:

  • 包名全小写
  • 类名、接口名:每个单词首字母大写
  • 变量名、方法名:第一个单词全小写,后面每个单词首字母大写
  • 常量名全大写
  • 名字要有意义

变量与常量

变量

变量是程序的基本元素,它的作用是表示一个数据实体,它的本质是内存中的一块区域,该内存区中的数据可以改变,它的表现形式是一个合法的标识符,这个标识符就是变量的名称,可以通过该标识符或者说该名称来使用它所对应的内存区中的数据。

声明

变量类型 变量;

初始化
  • 变量类型 变量=初始值;
  • 变量类型 变量;变量=初始值;

第二中有时候用来提高变量的作用域

常量

普通常量:就是一些常数。

符号常量:

  • 使用关键字final来指示常量。
  • 只能被赋值一次。

运算符

算数运算符

算术运算符是进行算术运算的操作符。

一元运算符:自增,自减(++,–)

  • i++,先运算再自增
  • ++i,先自增再运算
  • –同理

二元运算符:加减乘除(±*/%)

  • / 符号两边均是整数时,商是整数,直接去尾。
  • % (符号两边只能是整数)取余

关系运算符

关系运算符也称比较运算符,用来比较两个操作数。

  • ==,!=,>,<,>=,<=
  • instanceof 运算符 instanceof 是验证对象是否是某个类的实例
a instanceof A;//对象 a instanceof 类 A

逻辑运算符

  • &&,|| 短路逻辑 前面的条件false或者true,直接可以得出答案,后面的条件将不会进行运算。
  • &,| 非短路逻辑
  • ^ 逻辑异或 不相同为true,不相同为false。
  • ! 逻辑非

位运算符

将两个数写成2进制形式,进行运算。

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反

移位运算符

  • >> 符号右移
  • >> > 无符号右移 最高位0填齐。负数无符号右移为正数。
  • << 左移

注意事项:

  • Java 中没有<<<运算符
  • 参与移位运算的操作数类型有 byte、short、char、int、long,且对低于 int 型的操作数将 先自动转换为 int 型再移位。

赋值运算符

  • =
  • +=,-=,*=,/=

条件运算符

三元运算符

表达式 1 ? 表达式 2 : 表达式 3

  • 表达式 1是关系表达式或逻辑表达式
  • true计算表达式2
  • false计算表达式3

运算优先级

请添加图片描述
请添加图片描述

输入输出(简易)

读取输入

Scanner类(定义在java.util包中)

  • 获取输入:
Scanner in=new Scanner(System.in);

方法:

  • String next() 下一个单词

  • String nextLine() 下一行数据

  • int/double nextInt() nextDouble() 下一个int/Double型数据

  • boolean hasNext() 是否还有其他单词

  • boolean hasInt hasDoble …

格式化输出

  • 普通输出:
System.out.println();//带换行符
System.out.print();//不带换行符
  • 格式化输出
System.out.printf("%index$ flag width [.precision+conversion character|t+conversion character]");
  • index 索引 用于指出后面参数的索引,以$结尾。
  • ❗❗从1开始
System.out.printf("%1$s %2$tB %2$te %2$tY","due date:",new Date());
  • flag 标志
    请添加图片描述

  • width 宽度 :表示整体的长度

  • precision 精度:表示小数点的位数

  • conversion character :转化的字符,转换符
    请添加图片描述

  • 时间的格式化选择 以t开头,+上相应的转换符
    请添加图片描述
    请添加图片描述

简易的文件输入与输出

  • 这里使用的是绝对路径。
  • 后面IO流将会详细说明。
读取文件
Scanner scanner=new Scanner(Path.of("D:\\testFile\\1.txt"), StandardCharsets.UTF_8);
写入文件
PrintWriter printWriter = new PrintWriter("D:\\testFile\\1.txt", StandardCharsets.UTF_8);
printWriter.write("1234");
printWriter.close();

流程控制

Java 程序是按照一定的顺序执行的,程序执行的顺序就是流程,对程序执行的顺序进行控制就 是流程控制。

Java 程序中的流程控制有三种类型:顺序结构、分支结构,循环结构。

顺序结构

顺序结构是指程序在运行过程中按照从上到下、从左到右的顺序依次执行每条语句,不会发生跳转,也不会重复执行某些语句。

分支结构

分支结构也称为选择结构,是指程序在执行过程中会根据条件选择执行不同的分支程序。

分支结构分为两种:双分支结构和多分支结构。

双分支结构
if(condition){
    语句块;
}
[else{
    语句块;
}]
多分支结构

第一种:

if(condition){
    语句块;
}else if(condition){
    语句块;
}else if(condition){
    语句块;
}
......
else{
    语句块;
}

第二种:

switch(表达式){
    case1:
        语句1;
        break;
    case2:
        语句2;
        break;
    ......
    case 值n:
        语句n;
        break;
    [default: 语句;]
        
}

  • switch 后面小括号内的表达式的值的类型只能是 byte、short、char、int的常量表达式,枚举常量和字符串字面量。
  • case 后面紧跟的值的必须是基本常量,且所有 case 子句中的值应该 是不同的。
  • 当所有的 case 分支中的值都没有和表达式中的值匹配时,default 分支将被执行。
  • ❗❗break 是 switch 分支的关键语句,作用是当某个 case 分支执行完成后,跳出 switch 分支结构。如果没有 break 语句,一旦某个 case 分支的值和表达式的值匹配,其后的所有 case 分 支都会被执行,直到碰到一个 break 语句才结束。
  • case 分支中可以写多条语句,不需要大括号。
循环结构
for循环
for(判定变量的初始值;判断是否符合条件;迭代部分){
    循环体;
}
增强型for循环

专门用来遍历数组和集合的。内部相当于一个迭代器

for(元素数据类型 变量名:Collection/数组)
    循环体;
} 
while循环
while(判断部分){
    循环部分;
    迭代部分;
}
do-while循环
do{
    循环部分;
    迭代部分;
}while(判断部分);
  • do-while 循环至少会执行一次。
  • while(判断部分)后面一定要加上";"。

流程跳转

break语句

break 语句一般应用于 switch 结构和循环结构,作用是跳出这层循环。

continue语句

continue 语句一般应用于循环结构,continue 语句的作用是继续下一次循环。

标签
  • 针对于嵌套很深的循环(for,while)
  • 对于有多层循环,想要跳出所有循环则需要多个break,java提供了标签(标号)功能,可以直接跳出多层循环。
loop:for(...){
    for(...){
        for(...){
            ...
            break loop;
        }
    }
}

三种简易算法

穷举

穷举算法也叫“枚举算法”,基本思想是将所有可能的解都列举出来。

递推(迭代)

递推算法就是按照一定的规律,递推或迭代一定的次数,从而得到结果的一种算法。

💥递归

(重点)

递归就是把方法不断地自我调用,直到满足一定的条件后,再逐层返回的算法。

例题:计算 N!

public class DiGui{
    public static void main(String arg[]){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        System.out.println(n+"的阶乘为:"+JieCheng(n));
    }
    public static int JieCheng(int n){
        if(n==1) return 1;
        else return n*JieCheng(n-1);
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rookie驿站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值