活动地址:CSDN21天学习挑战赛
✨博客主页: XIN-XIANG荣
✨系列专栏:【Java SE】
✨一句短话: 难在坚持,贵在坚持,成在坚持!
✨博客说明: 尽己所能,把每一篇博客写好,帮助自己熟悉所学知识,也希望自己的这些内容可以帮助到一些在学习路上的伙伴,文章中如果发现错误及不足之处,还望在评论区留言,我们一起交流进步!😊
😽这篇博客介绍Java中的一些基本语法,但由于这部分语法很简单,所以不做太多的赘述,只是在C语言的基础上介绍一些细节的区分。
Java中的注释主要分为以下三种:
这里主要是介绍文档注释,常见于方法和类之上描述方法和类的作用,可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档 。
javadoc 工具可以识别以下标签:
标签 | 描述 |
---|---|
@author | 标识一个类的作者 |
@deprecated | 指名一个过期的类或成员 |
{@docRoot} | 指明当前文档根目录的路径 |
{@inheritDoc} | 从直接父类继承的注释 |
{@link} | 插入一个到另一个主题的链接 |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 |
@param | 说明一个方法的参数 |
@return | 说明返回值类型 |
@see | 指定一个到另一个主题的链接 |
@serial | 说明一个序列化属性 |
@serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 |
@serialField | 说明一个ObjectStreamField组件 |
@since | 标记当引入一个特定的变化时 |
@throws | 标志一个类抛出的异常 |
{@value} | 示常量的值,该常量必须是static属性 |
@version | 指定类的版本 |
@exception | 和 @throws标签一样. |
程序中由用户给类名、方法名或者变量所取的名字。
【硬性规则】
【软性建议】
关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。
字面常量的分类:
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。
基本数据类型有四类八种:
四类: 整型、浮点型、字符型以及布尔型
八种:
数据类型 | 关键字 | 内存占用 | 范围 | 包装类型 |
---|---|---|---|---|
字节型 | byte | 1 字节 | -128~127 | Byte |
短整型 | short | 2 字节 | -32768~32767 | Short |
整形 | int | 4字节 | -231~232-1 | Integer |
长整形 | long | 8字节 | -263-263-1 | Long |
单精度浮点数 | float | 4字节 | 有范围,一般不关注 | Float |
双精度浮点数 | double | 8字节 | 有范围,一般不关注 | Double |
字符型 | char | 2字节 | 0~65535 | Character |
布尔型 | boolean | 没有明确规定 | true和flase | Boolean |
注意:
// int型变量所能表示的范围:
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
// long型变量所能表示的范围:这个数据范围远超过 int 的表示范围.
//足够绝大部分的工程场景使用.
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE);
// short型变量所能表示的范围:
System.Out.println(Short.MIN_VALUE);
System.Out.println(Short.MAX_VALUE);
// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);
对于变量的概念这里不做介绍,
Java中变量的使用需要注意如下几点:
boolean value = true;
System.out.println(value + 1);
// 代码编译会出现如下错误
Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误
System.out.println(value + 1);
^
第一个类型: boolean
第二个类型: int
1 个错误
Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验.
Java中也存在隐式类型转换(隐式),强制类型转换(显式),整形提升等。
注意事项:
int a = 10;
long b = 100L;
b = a;
// int-->long,数据范围由小到大,隐式转换
a = (int)b;
// long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f;
// float-->double,数据范围由小到大,隐式转换
f = (float)d;
// double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d;
// 报错,类型不兼容
a = (int)d;
// double没有int表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100;
// 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257;
// 257默认为int,超过byte范围,需要显示转换,否则报错
boolean flag = true;
a = flag;
// 编译失败:类型不兼容
flag = a;
// 编译失败:类型不兼容
int a = 10;
long b = 20;
int c = a + b;
// 编译出错: a + b-->int + long--> long + long 赋值给int时会丢失数据
long d = a + b;
// 编译成功:a + b==>int + long-->long + long 赋值给long
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
在Java中使用String类定义字符串类型,比如:
public static void main(String[] args) {
String s1 = "hello";
String s2 = " world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}
在有些情况下,需要将字符串和整形数字之间进行转换:
int num = 10;
// 方法1,当字符串和整数在一起使用+号时,
//+号起到拼接的作用
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
String str = "100";
int num = Integer.parseInt(str);
关于操作符,在C语言部分的博客有过详细的介绍,在java中也是大同小异的,这里只针对java部分做出一些补充和区分。
该种类型运算符操作完成后,会将操纵的结果赋值给左操作数;使用这些运算符,当大范围的类型赋值给小范围类型时不需要进行强制类型转换,类型转换会默认进行
int a = 1;
long b = 2;
//不需要进行强制类型转换
a += b;
//需要进行强制类型转换
a = (int)(a + b);
Java中的!只能运用于布尔表达式,
条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3 ,而表达式1只能是布尔表达式
java中的真与假只能是true和flase;要与C语言中的0为假,非0为真区分,java中不存在这种说法。
&& 和 || 遵守短路求值的规则 ;
java中的 & 和 | 如果两侧的表达式结果为 boolean 时, 也表示逻辑运算.;
但与 && || 相比, 它们不支持短路求值.
关于位运算,java当中比C语言言多出一个运算符**>>> (无符号右移)。**
移位规则:右侧位舍弃, 左侧位补 0
注意:
逻辑控制有顺序、选择、循环三种结构。
这里强调在java中如if else, while, for, do while这些语句中,其中的表示真假的结果必须是布尔表达式,不存在0为假,非0为真。
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
基本语法 :
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
代码示例:
System.out.println("hello world");
int x = 10;
System.out.printf("x = %d\n", x)
格式化字符表:
转换符 | 类型 | 举例 | 结果 |
---|---|---|---|
d | 十进制整数 | (“%d”, 100) | 100 |
x | 十六进制整数 | (“%x”, 100) | 64 |
o | 八进制整数 | (“%o”, 100) | 144 |
f | 定点浮点数 | (“%f”, 100f) | 100.000000 |
e | 指数浮点数 | (“%e”, 100f) | 1.000000e+02 |
g | 通用浮点数 | (“%g”, 100f) | 100.000 |
a | 十六进制浮点数 | (“%a”, 100) | 0x1.9p6 |
s | 字符串 | (“%s”, 100) | 100 |
c | 字符 | (“%c”, ‘1) | 1 |
b | 布尔值 | (“%b”, 100) | true |
n | 散列码 | (“%h”, 100) | 64 |
% | 百分号 | (“%.2f%%”, 2/7f) | 0.29% |
注意:
import java.util.Scanner;// 需要导入 util 包
public class Blog {
public static void main(String[] args) {
//Scanner 工具 System.in:键盘
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
sc.close(); // 注意, 要记得调用关闭方法
}
}
执行结果如下:
import java.util.Scanner;
public class Blog {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int sum = 0;
int num = 0;
while (scan.hasNextInt()) {
//scan.hasNextInt()判断是否还有下一个整数
int tmp = scan.nextInt();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
scan.close();
}
}
注意:当循环输入多个数据的时候, 使用 ctrl + d 来结束输入 .
执行结果如下:
在 Java 中要生成一个指定范围之内的随机数字有两种方法:一种是调用 Math 类的 random() 方法,一种是使用 Random 类。
Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。Random 类位于 java.util 包中,该类常用的有如下两个构造方法:
Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。
下面的代码实现一个猜数字的简单功能:
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Random random = new Random();
Scanner scan = new Scanner(System.in);
int ret = random.nextInt(101);
//生成0到101之间的随机数,不包括0和101,
//也就是生成1~100的随机数
while(true){
System.out.println("输入你所猜的数字");
int num = scan.nextInt();
if(ret < num){
System.out.println("猜大了");
}else if(ret > num){
System.out.println("猜小了");
}else{
System.out.println("猜对了");
break;
}
}
scan.close();
}
}
各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗😁!!! 感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步😉!!!加油🏃!!!