JavaSE-基本程序设计结构(上)

Posted Jack·Kwok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE-基本程序设计结构(上)相关的知识,希望对你有一定的参考价值。

1. 注释

和大多数程序设计语言一样,写在程序中,方便理解代码,但不会被执行。Java中表示注释的方式有三种

1.1. 单行注释

1.1.1. 规则

格式:
//...
//输出你好的英文
System.out.println("Hello World");

1.2. 多行注释

1.2.1. 规则

格式:
/*
...
*/
/*
输出你好的英文
one line
two line 
...
many line
可以写很多行的注释呢!!     
*/
System.out.println("Hello World");

1.3. 文档注释

1.3.1 规则

格式:
/**
...
*/
/**
 * @ClassName Me
 * @Description TODO
 * @Author jiaqi
 * @Date 2021/5/21 17:04
 * @Version 1.0
 **/
public class Me {
    /**
     * @Author Jiaqi
     * @Description //TODO 
     * @Date 17:06 2021/5/21
     * @Param [str]
     * @return int
     **/
    public int inFor(String str){
        return str.length();
    }
}

1.3.2. 命令行执行(doc窗口)

文档注释可以在javadoc工具中生成文档,其方法如下:
命令行:
进入到需要生成文档的java文件的路径,执行命令

javadoc -d apidoc *.java

参数解释:javadoc命令支持通配符,例如使用*.java来代表当前路径下的所有java源文件,javadoc常用的选项有如下几个:

-d : 该选项指定一个路径,用于将生成的API文档放到指定的目录下,在这里表示生成一个apidoc文件夹,并在其中生成注释文档。
*.java 表示匹配java文件

1.3.3. 可视化执行(IDEA)

使用命令行去生成文档显然有很多弊端,例如需要再每个类或者方法上重复写各种相同的信息等等 在IDEA中则可以通过配置模板并通过快捷键生成。

1.3.3.1. 类模板

1.idea中打开:File–>settings–>Editor–>File and Code Templates–>Files,选择class文件
在这里插入图片描述
2.插入模板

/**
  *@ClassName ${NAME}
  *@Description TODO
  *@Author ${USER}
  *@Date ${DATE} ${TIME}
  *@Version 1.0
  **/

其中Name属性必须与下面的类名一样,生成的时候是根据类名去生成的,USER、DATE、TIME则会从你的系统中获取(USER是你电脑对应的用户名)

1.3.3.2. 方法模板

1.idea中打开 File–>Settings–>Editor–>Live Templates
在这里插入图片描述
2. 新建group,名字随意,可为myDefine,确认
3. 在这个组下面新建一个live template,名字为*,(注意这里不要取别的名字,方便后面快捷键的使用)
4. 输入方法模板:

*
 * @Author your name
 * @Description //TODO $end$
 * @Date $time$ $date$
 * @Param $param$
 * @return $return$
 **/

在这里插入图片描述
5. 这时候下方会显示黄色感叹号,点击define,选择EveryWhere–>Java,确定
6. 设置参数Edit variables,输入对应的函数实现。
在这里插入图片描述
从这以后,新建的类将会自动生成类模板的文档注释;写好方法后,输入/**+快捷键Enter,就可以生成。

2. 数据类型

2.1. 介绍

Java中总共有8种数据类型,4种整型、2种浮点类型、1种字符类型和1种表示真值的类型。

2.2. 整型

类型存储范围备注
int4字节最常用(十六进制前缀为0x)或0X、八进制前缀为0
short2字节
long8字节后缀有L或l
byte1字节

2.3. 浮点类型

类型存储范围备注
float4字节后缀为f或F
double8字节最常用

2.4. char类型

public class Me {
    public static void main(String[] args) {
        char a = 'a';
        char b = '4';
        System.out.println(a);//'a'的Ascii值为97
        System.out.println(b);//'4'的Ascii值为52
        System.out.println(a+b);//97+52
        System.out.println(a+4);//97+4
    }
}

2.5. boolean类型

boolean类型有false和true两个值,用来判定逻辑对与错。
注:整型和布尔值不能进行相互转换

3. 变量与常亮

3.1. 声明变量

double d;
int i;
long lo;
boolean b;
int k,d;

变量名必须是一个以字母开头并由数字或字母构成的序列
其中,字母包括大小写字母,美元符和下划线。且Java保留字不能作为变量名

3.2. 变量初始化

int dv = 5;

int dv;
dv = 5;

3.3. 常量

public static final double TU_AE_HY = 2.34;

3.4 枚举类型

有时候,我们对一个变量所需要的值是有限的,则这个时候我们就需要用到枚举类。

enum Sub{CHINESE,ENGLISH,MATH}
Sub s = Sub.MATH;

4. 运算符

4.1. 算数运算符

+ - * / % 分别表示加减乘除和求余(取模)

注:除法运算参与运算的两个数都为整数时,表示整数除法,否则表示浮点数除法。整型除以0会报错,浮点数除以0则会表示无穷。

System.out.println(24/5);//结果为4
System.out.println(11%4);//结果为3

4.2. 数学函数与常量

Java中包含了一个Math类,其中包含了各种各样的数学函数。

public class Me {
    public static void main(String[] args) {
        //求23.4的sin值
        Math.sin(23.4);
        Math.cos(22.3);
        Math.tan(12.6);
        //计算3.4的atan值
        Math.atan(3.4);
        Math.atan2(2.3,4.3);
        Math.exp(3);
        Math.log10(3);
        System.out.println(Math.PI);
        System.out.println(Math.E);
        Math.sqrt(3);
        Math.pow(3,2);
    }
}

4.3. 数值类型之间的转换

在这里插入图片描述
上图实线表示转换后不会导致信息丢失,虚线表示转换会有一定精度的损失。

int n = 123456;
float f = n;//int类型转换为float,结果为1.23456;

4.4. 强制类型转换

由上面图我们可以看到,只有int转为double,而double转为int没有显示箭头,这个时候则需要强制类型转换。如下

double x = 3.45
int i = (int)x;//i = 3

4.5. 结合赋值和运算符

x=x+4;
x+=4;

以上两行代码的效果是一样的,都是先将x加4然后再赋值给x。同理,也有x-=4;x*=4;等等

4.6. 自增与自减运算符

n++;
++n;
以上两个语句都是表示对n加1,但遇到赋值语句时,第一句表示先赋值再自增;第二句语句表示先自增再赋值;

int m = 7;
int n = 7;
int a = 2 * ++m;// a = 16,m = 8
int b = 2 * n++;// b = 14,n = 8

4.7. 关系和boolean运算符

== != < > >= <= && || 
分别表示等于 不等于 小于 大于 大于或等于 小于或等于 和 或

三元操作符:
语法:条件 ? 值1:值2
如果表达式为true,表达式的值为值1;否则为值2。

4.8. 括号与运算符级别

在这里插入图片描述

5. 字符串

5.1. 主要用法

public class Me {
    public static void main(String[] args) {
        //定义一个字符串
        String n = "hi";
        System.out.println(n);
        //定义一个空字符串
        String n1 = "";
        System.out.println(n1);
        //获取一个子串(substring第一个参数表示索引为0,
        // 二个参数表示不想复制的第一个位置)
        String father = "father";
        String substring = father.substring(0, 3);
        System.out.println(substring);
        //拼接字符串
        String a1 = "i am ";
        String a2 = "a student";
        System.out.println(a1+a2);
        //判断字符串是否相等
        String you = "you";
        String me = "me";
        System.out.println(you.equals(me));
        //不区分大小写的判断字符串是否相等
        String you1 = "you";
        String you2 = "YoU";
        System.out.println(you1.equals(you2));
        //千万不可以用==判断两个字符串是否相等
        //判断是否为空串
        String a ="";
        System.out.println(a.equals(""));
        System.out.println(a.length()==0);
        //判断是否为null
        String kk= null;
        System.out.println(kk ==null);
        //判断一个字符串既不是空串也不是null
        String dd = "dd";
        System.out.println(dd.length()!=0 && dd!=null);
        //获取字符串的长度、获取它的指定字符
        String ff = "abc";
        System.out.println(ff.length());
        System.out.println(ff.charAt(2));
        //替换字符串,用uu代替字符串re中的所有tt
        String re = "guottdd";
        System.out.println(re.replace("tt","uu"));
    }
}

运行结果
在这里插入图片描述

5.2. 构建字符串

我们都知道String是不可改变的,每一次的“改变”实际上是重新创建字符串并赋值而已,这是一个优点,但在有些场合确实不太合适。例如在读取文件的时候,如果用String存储,每次读取的内容都必须“拼接”到旧字符串的后面,这实际上是重新创建了一个新的字符串,效率很低。又浪费空间。所以我们在这种场合,我们使用StringBuilder类。

public class Me {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("hello");
        sb.append("mybaby");
        System.out.println(sb.toString());
        //求sb长度
        System.out.println(sb.length());
        //将指定位置设置指定的值
        sb.setCharAt(2,'y');
        System.out.println(sb);
        //在指定位置插入一个字符串或一个字符
        sb.insert(3,"uu");
        System.out.println(sb);
        sb.insert(6,'r');
        System.out.println(sb);
        //删除指定范围的值
        sb.delete(4,7);
        System.out.println(sb);
    }
}

运行结果
在这里插入图片描述

以上是关于JavaSE-基本程序设计结构(上)的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE-基本程序设计结构(下)

JavaSE 方法的使用

JavaSE基础--Java 循环结构

JavaSE-流程控制

[javaSE] 数据结构(AVL树基本概念)

JavaSE-线程线程的同步机制