java教程(一)基本程序设计结构

前言

因为自身java基础薄弱,故决定在闲暇时期,学习一下java基础相关,顺便做成笔记,供需要的人学习

新建项目

不会新建项目的请移步 一、创建第一个springboot项目,该文章有详细步骤。


数据类型

我们都知道java是一种强类型语言,意味着每一个变量对应了一种类型,而java中,有8种基本类型——4种整型,2种浮点类型,1种字符类型,1种布尔类型。

整型

整型用于表示没有小数部分的数值,可以为负数。分别是:int,short,long,byte。

类型存储需求取值范围
int4字节-2147483648~2148473647
short2字节-32768~32767
long8字节-9223372036854775808~9223372036854775807
byte1字节-128~127
浮点类型

浮点类型用于表示有小数部分的数值。分别是:float,double。

类型存储需求取值范围
float4字节大约±3.40282347E+38F(有效位数为6-7位)
double8字节大约±1.79769313486231570E+308(有效位数为15位)
字符类型

char类型用于表示单个字符,通常用来表示字符常量。

布尔类型

Boolean类型有两个值:true和false,用来判定逻辑条件。

注意:整型值和布尔值之间不能进行相互转换

变量

在java中,每一个变量都属于一种类型,在声明变量时,变量所属类型位于变量名之前。例如:

int a;
string b;
double c;

注意:

  • 变量名的长度没有限制
  • 不能将变量名命名为java的保留字
  • 变量名必须以字母开头
  • 变量名对大小写敏感
变量初始化

声明一个变量后,必须用赋值语句对变量进行显式初始化。例如下面的代码将会报错:variable not initiaized

int a;
System.out.println(a);
变量赋值

赋值有两种办法,例如:

//第一种
int a;
a = 1;
//第二种
int a = 2;
常量

在java中,使用关键字final表示常量,例如:

final int A = 3;

关键字final修饰的变量只能被赋值一次,一旦赋值就再也不能更改了,并且在书写习惯上,常量名使用大写的形式。

在java中,如果我们希望某一个常量可以在很多的类中使用,则将这些常量称为类常量,使用关键字 static final 设置。例如:

public static final B = 4;

注意:

  • 类常量的定义位于main方法外
  • 如果类常量被声明为public,则其他类的方法也可以使用该常量

运算符

java中也有运算,加减乘除分别用 +-*/表示。只是需要注意以下几点:

  • 参与/运算的两个操作数都是整数时,则表示整数除法,否则表示为浮点数除法
  • 整数的求余(取模)用%号表示。例如:15/2=7,而15%2=1,15.0/2=7.5
  • 整数被0除将会产生异常,而浮点数被0除将会得到无穷大或者NaN的结果
自增运算符与自减运算符

n++是将变量n的当前值加+1,n–是将变量n的当前值-1。这是属于后缀方式,还有一种前缀方式,例如++n。两种方式都是对变量值+1。他们的区别在于一个是先加再计算,一个是先计算再加。

例如:

int a = 1;
int b = 2 * a++ //此时的 b = 2,a=2
int c = 2 * ++b //此时的 c = 4,a=2
关系运算符和Boolean运算符

java中包含的运算符如下:

  • == 表示等于
  • !=表示不等于
  • 另外还有数学上常见的 <(小于),>(大于),<=(小于等于),>=(大于等于)
  • 用&&表示逻辑 “与”,用||表示逻辑“或”,用!表示逻辑“非”

而上述的关系运算符最终都会产生一个结果,用true或者false表示,通常用于if等判断中。java还支持三元操作符 ?:,例如:1 > 2 ? 1 : 2,即如果1>2为true则返回1,如果为false则返回2。

数值类型之间的转换

程序运行时,经常会使用到类型转换,下图给出了数值类型的合理转换,其中五个蓝色箭头代表数据转换不会出现精度丢失,三个橙色箭头代表可能存在精度丢失的情况。

image-20210316122949301

注意:

  • 如果两个操作数中有一个是double,类型,另一个也会被转换为double类型
  • 如果其中一个是float类型,则另一个也会被转换为float类型
  • 如果其中一个是long类型,则另一个也会被转换为long类型
  • 如果均不满足上述条件,则均被转换为int类型
强制类型转换

强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:

double a = 9.997;
int b = (int) a; //此时的变量 b 的值为9

如果想对浮点数进行舍入运算,则需要使用 Math.round()方法:

double b = 9.97;
int c = (int)Math.round(b) //此时的变量c 值为10
枚举类型

枚举类型多适用于变量取值在一个有限的集合内,即结果是固定的几个值之一。

字符串

从概念上来讲,java字符串就是unicode字符序列。java没有内置的字符串类型,而是遭java类库中提供了一个预定义类,很自然的就叫String,每一个用双引号括起来的字符串都是String类的一个实例。例如:

String a = "";
String b = "1";

字符串的常用API文档,包括后面的字符串构建的API文档,请自行搜索jdk文档相关

子串

String类的substring方法可以从一个较大的字符串提取出一个子串。例如:

String a = "123456789";
String b = a.substring(0,3); //意思是从字符串a的下标0开始截取。一共截取三位,即变量b的值为 “123”

拼接

java语言允许使用 + 号拼接两个字符串。例如:

String a = "1";
String b = "2";
String c = a + b; //此时 c 的值为 “12”

当将一个字符串和一个非字符串的值进行拼接时,非字符串会被转变为字符串。例如:

String a = "1";
Integer b = 2;
String c = a + b; //此时 c 的值为 “12”
字符串不可变

String类并未提供修改字符串的方法,如果我们要修改某一字符串的内容,我们只能截取我们需要的那一部分然后再拼接我们想要的那一部分,亦或者使用 String的replace方法。

因为不能对字符串的字符进行修改,所以java文档中对String类对象称之为不可变字符串。

检测字符串是否相等

在java中可以使用 equals()方法检测两个字符串是否相等。表达式为: a.equals(b),如果相等则结果为 true,不相等的结果为 false。

如果想要比较两个字符串是否相等却忽略大小写,则使用equalsIgnoreCase()方法。

注意:

  • 比较的字符串 a和b可以是变量亦可以是常量。
  • 不要使用 == 运算符比较两个字符串是否相等。
空串与null串

空串 “”是长度为0的字符串,即长度为0,内容为空。当然了,String变量还可以存放一个特殊的值 null,表示目前没有任何对象与该变量关联。如果要检测一个字符串不为null和不为空,则条件为:

if(str != null && str.length()!=0) //前者判断字符串 str 是否为空 ,后者判断字符串str的长度是否为0
构建字符串

在java中采用StringBuilder构建我们需要的字符串。例如:

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("heello");
stringBuilder.append(",");
stringBuilder.append("world");
stringBuilder.append("!");
System.out.println(stringBuilder.toString()); //此时的 stringBuilder 值为 “heello,world!”

程序控制流程

在java中,使用条件语句和循环结构控制程序流程。

条件语句

条件语句的格式为:if(condition) {statement },条件位于括号内,而执行语句也可以是多条。当然了,条件语句还有加上 else 的写法:if(condition){statement1;statement2}else{statement3},如果是多个if后面跟着一个 else ,则else与最近的if组成一组。例如:

//第一种纯 if 写法  此时输出结果是 2
if (2>1){
    System.out.println(2); 
}
//第二种带else的写法 此时输出结果是 1
if(2<1){
    System.out.println(2); 
}else{
    System.out.println(1); 
}
//第三种多个if写法  此时输出结果是 2 2
if (2 > 1) {
    System.out.println(2);
}
if (1 > 2) {
    System.out.println(1);
} else {
    System.out.println(2);
}
循环
while循环

当条件为 true时,while循环执行一条语句或者一个语句块,格式为:while(condition){statement},如果最开始的判断条件就是false,则语句块一次也不执行。因为while循环语句首先检测循环条件,所以循环体有可能不被执行,如果你希望循环体至少执行一次则使用 do {statement}while(condition)。

//此时的while会一直循环执行下去,不间断的输出 2
while(2>1){
    System.out.println(2);
}
//此时只会输出一个 1
do {
    System.out.println(1);
}
while (2 < 1);
for循环

for 循环是支持迭代的一种通用结构,利用每次迭代后更新的计数器或者变量来控制迭代次数。

格式如下:第一部分是初始化变量,第二部分是检测条件,第三部分是对变量进行更新。

for(int i = 0;i<10;i++){
    System.out.println(i);
}

如果在for循环内部定义了变量,则不能在for循环外使用,如要在for循环外部使用循环计数器的最终值,则需要在外部先定义该变量。例下:

int i;
for(i = 0;i<10;i++){
    //
}
System.out.println(i);
switch语句

这个是为了方便进行多重条件判断的,如果单纯的使用if/else,则会显得代码很臃肿,switch语句格式如下:

switch (1) {
    case 1:
        break;
    case 2:
        break;
    default:
        System.out.println(3);
}

switch 语句将从选项值相匹配的case标签开始执行。直到遇到break语句,或者执行到switch语句结束为止,如果没有一个case匹配,且有default子句,则执行该子句。

注意:

  • case 标签的类型可以是char,byte,short,int(或者他们对应的包装类),枚举常量,字符串以及字面量(从java7开始)
循环中断

在循环程序中,我们有时候会在循环满足某一个条件时,就跳过或者结束循环,即break和continue;他们的区别是:break会直接结束循环,而continue会跳过当前循环的剩余部分,直接到下一个循环

//此时只会输出 1 2 3 4
for(int t = 1;t<10;t++){
    if(t==5){
        break;
    }
    System.out.println(t);
}
// 此时会输出 1 2 3 4 6 7 8 9
for(int t = 1;t<10;t++){
    if(t==5){
        continue;
    }
    System.out.println(t);
}

数组

数组是一种数据结构,用来存储同一类型值得集合,通过一个整型下标(下标从0开始)可以访问数组中的每一个值。在声明数组变量时,需要指明数组类型,和数组变量的名字。数组一旦创建,则大小就不会再被改变。

// 声明数组的方式有以下两种,但是我们一般喜欢使用第一种
int [] a;
int a [];
//创建一个可以存储10个int类型整数的数组
int [] a = new int[10]
for each 循环

for循环的增强型,语句格式为:for(u:c){statement},此类循环会遍历数组中的每一个元素,而不需要使用下标。

数组初始化以及匿名数组

java提供了一种创建数组对象并同时赋值的简化书写方式:int [] a = {1,2,3,4,5}; 甚至可以初始化匿名数组:new int []{1,2,3,4,5}; 这种写法可以在不创建新变量的情况下重新初始化一个数组。

注意:在java中,数组的长度允许为0,所以需要注意区分null和0。

数组拷贝

在java中允许将一个数组变量拷贝给另一个数组变量,此时两个变量将引用同一个数组。如果希望将一个数组的所有值都拷贝到一个新的数组,则使用Arrays的copyOf() 方法。

int[] a = {1, 2, 3, 4, 5};
int[] c = Arrays.copyOf(a, 10); //第一个参数是 被拷贝数组,第二个参数是新数组的长度
for (int b : c) {
    System.out.println(b); //此时输出值分别是:1 2 3 4 5 0 0 0 0 0
}
数组排序

对数值型的数值进行排序,则使用Arrays类中的sort() 方法。该方法使用了优化后的快速排序法。

常见的还有返回数组中数据元素的字符串方法:Arrays.toString()

int[] a = {1, 5, 4, 3, 2};
int[] c = Arrays.copyOf(a, 10);
System.out.println(Arrays.toString(c)); // 此时输出为: [1, 5, 4, 3, 2, 0, 0, 0, 0, 0]
Arrays.sort(c);
for (int b : c) {
    System.out.println(b); // 此时的输出值为:0 0 0 0 0 1 2 3 4 5
}
多维数组

多维数组使用多个下标访问数组元素,适用于表格或者更加复杂的排列形式。

在java中声明一个二维数组的格式为: int [] [] a ; 想要快速打印一个二维数组的数据元素列表,则使用Arrays.deepToString()方法,例如:

int[][] i = {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}};
System.out.println(Arrays.deepToString(i)); // 此时输出值为:[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

基本程序设计结构篇章到此结束,下一篇将学习 对象与类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值