目录
我们今天来学习一下JavaSE,拓展一下自己的后端知识,并分享给大家,与大家共勉。
其中我会把演示代码和运行结果展示在笔记当中,运行环境是2022版的IDEA。大家使用eclipse或其他编译器也是可以的,大差不差。
什么是JavaSE
JavaSE,全称为Java Standard Edition,是Java平台的标准版,它构成了Java技术的基础部分。JavaSE提供了完整的Java编程环境,包含了开发Java应用程序所必需的核心类库、API(应用程序接口)和工具,如Java虚拟机(JVM)、Java语言规范、标准类库等。
JavaSE允许开发者创建和部署在桌面、服务器、嵌入式环境和实时环境中运行的Java应用程序。它支持基本的网络功能、图形用户界面(GUI)、数据库连接(通过JDBC)、多线程、安全机制等,同时还包括了用于开发JavaWeb服务的类库。
JavaSE的广泛应用,得益于其跨平台的特性,即"一次编写,到处运行"(Write Once, Run Anywhere,WORA),这使得Java应用程序可以在任何安装了Java虚拟机的设备上运行,无需重新编译。这一特性极大地简化了软件分发和维护的复杂性,也促进了Java的普及和使用。
JavaSE的基本语法规范
所有的Java语句必须以`;`结尾。无论是`()`、`[]`还是`{}`,所有的括号必须一一匹配。主方法的代码只能写在`{}`中。
JavaSE的基本语法
变量和常量
变量
变量就是一个可变的量,例如定义一个int类型的变量(int就是整数类型)。我们能够随意更改它的值,变量可以是类的变量,也可以是方法内部的局部变量
java
public class Main {
public static void main(String[] args) {
int a = 10;
System.out.println("a = " + a);
a = 20;
System.out.println("a = " + a);
a = 10;
System.out.println("a = " + a);
}
}
需要注意的是,Java是强类型语言,只有明确定义了变量之后,你才能使用。一旦被指定某个数据类型,那么它将始终被认为是对应的类型(和JS不一样)。
同样变量名需要注意以下规则:标识符以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头、大小写敏感、不能有空格、@、#、+、-、/ 等符号、不可以是 true 和 false、不能与Java语言的关键字重名。我们也应当最好使用驼峰式命名规则,做到见名知其意。
常量
常量就是无法修改值的变量,常量的值,只能定义一次。
java
public class Main {
public static void main(String[] args) {
final int a = 10;
a = 10;
}
}
常量前面必须添加final关键字(C语言里面是const,虽然Java也有,但是不能使用)。
注释
注释包括单行注释和多行注释,注释并不会执行,在日常撰写代码的过程中应当及时留下自己写下这段代码的足迹,方便以后的自己或者他人阅览代码时的方便。下面这段代码在运行后什么都不会发生。
java
public class Main {
public static void main(String[] args) {
//我是单行注释
/*
* 我是
* 多行注释
*/
}
}
基本数据类型
整型
整数类型是最容易理解的类型,在Java中,整数类型包括以下几个小种类:
- byte 字节型 (8个bit)范围:-128~+127。
- short 短整形(16个bit)范围:-32768~+32767。
- int 整形(32个bit)最常用的类型。
- long 长整形(64个bit)最后需要添加l或L。
如果连长整型都无法容纳,那可以用BigInteger来解决。
字符串和字符型
在Java中存在字符类型能够代表一个字符:char 字符型(16个bit)范围是0 ~ 65535。字符需要使用单引号包裹起来,例如:
java
public class Main {
public static void main(String[] args) {
char a = 'A';
System.out.println(a);
}
}
String就是Java中的字符串类型(注意,它是一个类,创建出来的字符串本质是一个对象,不是我们的基本类型)字符串就像它的名字一样,代表一串字符,也就是一句完整的话。字符串用双引号括起来,比如:
java
public class Main {
public static void main(String[] args) {
String str = "这是一个水印,这段代码和这篇笔记由CSDN的PleaSure乐事撰写,如有发现抄袭,请私信联系";
System.out.println(str);
}
}
小数型/浮点型
在Java中,小数类型主要包含32bit的float单精度浮点型和64位的double双精度浮点型。同样,如果双精度无法解决,我们可以用BigDecimal来解决。当然还有一种方法是我们能用数组或字符串来进行浮点数表示,这样的方式更为复杂,但是相应的好处也就更多。
布尔型
布尔类型(boolean)只有true和false两种值,要么为真,要么为假,布尔类型的变量通常用作流程控制判断语句。同样,我们可以用0和1来分别代替false和true,效果类似,但是不如直接使用布尔型来的直观。
类型转换
隐式类型转换
隐式类型转换支持字节数小的类型自动转换为字节数大的类型,整数类型自动转换为小数类型,转换规则如下:
byte→short(char)→int→long→float→double
java
public class Main {
public static void main(String[] args) {
byte b = 9;
short s = b;
int i = s;
long l = i;
float f = l;
double d = f;
System.out.println(d);
}
}
显示类型转换
显示类型转换也叫做强制类型转换,即牺牲精度强行进行类型转换。实例如下:
java
public class Main {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;
System.out.println(b);
}
}
运算符
赋值和算术运算符
赋值运算符`=`是最常用的运算符,其实就是将我们等号右边的结果,传递给等号左边的变量,比如int a = 10。
算术运算符就是我们常说的加减乘除取余,分别用符号+-*/%来表示。其中加号需要特别注意,在Java当中,加号也可以当作字符串连接符使用,比如下面这段代码,虽然我们只是更换了几个变量的顺序,但是含义却差别非常大:
java
public class Variable {
public static void main(String[] args) {
int a = 100,b = 100;
String str = "老八秘制小汉堡";
System.out.println(a+b);
System.out.println("--------------");
System.out.println(a+str);
System.out.println("--------------");
System.out.println(str+a);
System.out.println("--------------");
System.out.println(str+str);
System.out.println("--------------");
System.out.println(a+b+str);
System.out.println("--------------");
System.out.println(str+a+b);
System.out.println("--------------");
}
}
另外,算术运算符还包括++和--,我们接下来以++为例,--同理。
a++的含义是在a原有的基础上把a的值增加1,++a也是这个意思。但是两者有一定微小的区别,a++是返回a的值在进行增加,++a是先进行增加再返回值,具体事例如下:
javapublic class Main { public static void main(String[] args) { int a = 10; a++; System.out.println(a); a = 10; System.out.println(a++); System.out.println(a); a = 10; System.out.println(++a); System.out.println(a); } }
为了使得代码更简洁,你还可以使用扩展的赋值运算符,包括`+=`、`-=`、`/=`、`*=`、`%=`,和自增自减类似,先执行运算,再返回结果,同时自身改变。比如a += 2等价于a = a + 2。
关系运算符
关系运算符主要包括大于>小于<等于==大于等于>=小于等于<=和不等于!=,结果只能是布尔类型,一般只用于基本类型的比较。比如下面这段代码的结果就是true:
java
int a = 10;
int b = 2;
boolean x = a > b;
System.out.println(x);
逻辑运算符
逻辑运算符两边只能是boolean类型或是关系/逻辑运算表达式,返回值只能是boolean类型,主要包括以下三种运算:
- 与&&要求两边同时为true才能返回true
- 或||要求两边至少要有一个为true才能返回true
- 非!一般放在表达式最前面,表达式用括号扩起来,表示对表达式的结果进行反转
java
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 2;
boolean x = a > b && a < b;
System.out.println(x);
a = 10;
b = 2;
x = a > b || a <= b;
System.out.println(x);
a = 10;
b = 2;
x = !(a > b);
System.out.println(x);
}
}
流程控制
选择结构
选择结构主要由if和switch两种。选择结构主要用于帮助我们根据条件判断,再执行哪一块代码。
if
if语句的基本格式如下,其中else并不一定需要,省略else部分代码也可以正常执行。像这段代码中,我们在if当中再嵌套一个if的操作也是允许的。
if(判断条件){
//判断成功执行的内容
if(判断条件){
//判断成功执行的内容
}
//if的内容执行完成后,后面的内容正常执行
}else{
//判断失败执行的内容
}
//if的内容执行完成后,后面的内容正常执行
switch
虽然`else-if`能解决多分支判断的问题,但是效率实在是太低了,多分支if采用的是逐级向下判断,费时费力,因此switch就诞生了。
switch(判断主体){
case 值1:
//运行xxx
break; //break用于跳出switch语句,不添加会导致程序继续向下运行
case 值2:
//运行xxx
break;
case 值3:
//运行xxx
break;
}
循环结构
循环主要分为以下三种:for、while、do-while。
for循环
for循环比较灵活,适配环境比较多。具体格式如下:
for(初始条件;循环条件;更新){
//循环执行的内容
}
//循环结束后,继续执行
其中,初始条件是循环开始时的条件,一般用于定义控制循环的变量;循环条件是每轮循环开始之前,进行一次判断,如果满足则继续,不满足则结束,要求为boolean变量或是boolean表达式;更新是每轮循环结束后都会执行的内容,一般写增量表达式。举个栗子,可以看看这个:
java
public class Main {
public static void main(String[] args) {
for(int i = 0;i < 10;i++){
System.out.println("点赞收藏关注");
}
}
}
但是如果不加任何循环条件则循环会无限制的执行下去。
while循环
while循环和for循环类似,但是它仅需要添加维持循环的判断条件即可。具体格式如下:
while(循环条件){
//循环执行的内容
}
java
public class Main {
public static void main(String[] args) {
int i = 1;
while(i<=5){
System.out.println("来自CSDN的PleaSure乐事的水印");
i++;
}
}
}
do-while
do-while和while类似,区别在于前者一定会执行一次循环体内的内容在进行判断,while并不会。格式如下:
do{
//执行内容
}while(循环条件);
实战练习
这里我们搜罗了几道简单题提供给大家参考与练习,希望可以对大家的知识巩固有所帮助,这些题博主本人已经AC,虽然得出的不是最优解,但是保证题目肯定有题解,大家可以放心打开编译器来爽快的刷题吧!
题一
背景
有个群叫我爱睡觉觉,里面有只雕每天早上都会说"早上好这个世界",然后有朵花就排队型会说"早上好这个世界"。但是某只就会去破坏队形。每隔两天她都能成功破坏队形。假设第一天她成功破坏了队形,请问第n天她能不能成功破坏队形?
输入输出
输入:第一行输入一个T,表示有T组测试数据(0<T<=10000)
每组测试数据第一行输入一个n,代表第n天(0<n<=1000,000,000)
输出:对于每组数据输出一行字符串,如果某只成功破坏了队形,则输出"showshowshow";否则输出"forever love"。
样例
输入:1 4
输出:showshowshow
提示
隔两天指的是第三天,例如1和4之间就隔了2、3两天。
来自博主的代码提示
java
while(T--){
//这不是最终答案,只是一部分代码提示,请自行补全,谢谢!
outcome=n%3;
}
如果小伙伴们愿意分享,可以把自己完成的代码放在评论区与大家讨论,为大家分享自己的解题思路。
题二
背景
画一个九九乘法表。一个式子内没有空格,式子间有一个空格,每行最后一个式子后没有空格。前4行是这样的:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
输入输出
输入:没有啊
输出:你猜啊
提示
三连
来自博主的代码提示
java
while(i<=n){
//这里的代码依然需要自己补全,需要注意i++和j++的位置,就可以解出来
while(j<=i){
}
}
总结
以上就是今天的JavaSE学习总结第一弹,希望大家能喜欢,如果对大家有所帮助,希望大家可以微我留下点赞、关注和收藏,或者在评论区留下您的喜欢也可以,这对我真的很重要!您的喜欢是我更新的动力,谢谢!