[Java基础](注释;关键字、标识符;变量、常量;数据类型、类型转换;运算符表达式;格式化)

✨✨个人主页:沫洺的主页

📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                           📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                           📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

💖💖如果文章对你有所帮助请留下三连✨✨

🍁注释

注释分为:单行注释、多行注释、文档注释

/**
 * 这是文档注释,可以写文档信息
 * @author moming
 * javac -d . Notes.java
 */
public class Notes {
    public static void main(String[] args) {
        //这是单行注释,用两个左斜杠表示

        /*
            这是多行注释
            用左斜杠星号和星号左斜杠表示
         */
    }
}

文档注释,主要依赖于javadoc.exe,提取java源代码文件中的注解结构,生成html-api 参考文件

怎么生成api参考文件可以看这里:

🍂关键字、标志符

标识符

标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立 起名称与使用之间的关系。

标识符是由字母 数字 下滑线 $组成的,不能数字开头,不能使用空格和特殊的符号。

关键字

Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。在Java中目前一共有53个关键字:其中由51+2个保留字=53个关键字。

 具体每个关键字的解释可以参考以下内容:
Java中的关键字_沫洺的博客-CSDN博客

💐变量、常量

变量

变量:是指值在程序运行期间可以被改变的量。变量用于储存信息。它指向内存的某个单元,而且指明了这块内存有多大。java是强类型,局部变量必须先声明初始化才可以使用。java程序中,变量名是区分大小写。

推断变量:var

Java中var是Java10版本新出的特性,用它来定义局部变量。 使用var 定义变量的语法: var 变量名 = 初始值;

var不是关键字,它不是固定的,它是一种动态类型,它会根据所赋的值来转换自生类型

var声明变量的注意事项: 1,var只能在方法内定义变量,不允许定义类的成员变量。 2,var 定义变量【必须】赋初始值,以后不能在赋初始值,不赋值无法判断类型。 3,var每次只能定义一个变量,不能复合声明变量

常量

指在程序执行期间其值不能发生变化的数据。例如数学中的π= 3.1415……又如:整数123,小数1.23,字符’A’,布尔常量 true、false等,程序开发中,常量名一般规则全部大写,声明常量时必须赋值,以后只能使用,不能再赋值,java语言声明常量使用final修饰

在开发领域常量一般都要求全大写

常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。

🌺数据类型、类型转换

数据类型分为基本数据类型(8种)和引用数据类型(对象 类 接口 数组)

为什么Java里有基本数据类型和引用数据类型?

引用类型在堆里,基本类型在栈里。

栈空间小且连续,往往会被放在缓存。引用类型cache miss率高且要多一次解引用。

对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高

基本数据类型

byte short int long float double char boolean (8大类型)

类型名称关键字字节数范围
整数字节型byte1-128 ~ 127
短整型short2-32768 ~ 32767
整形int4-2147483648 ~ 2147483647
长整型long8-2的63次方 ~ 2的63次方-1
浮点数单精度float41.4e-45f ~ 3.4e+38f
双精度double84.9e-324 ~ 1.8e+308
布尔型boolean1true或false
字符型char2

引用数据类型(对象 类 接口 数组)

对象

对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

类和对象的关系

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。

实例化:使用关键字new来创建一个对象。

初始化:使用new创建对象时,会调用构造方法初始化对象。

package moming;

public class Student {                           //名为Student的类
    public Student() {                           //这是一个无参构造方法
    }
    public Student(String name) {                //这是一个有参构造方法
        System.out.println(name);                //输出语句
    }
    public static void main(String[] args) {     //main方法
        Student stu = new Student("张三");       /*声明对象,对象类型为Student
                                                   对象名称为stu
                                                   通过new实例化Student这个类
                                                   并调用了有参构造,对参数进行初始化*/
    }
}

数组

数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。

定义数组两种方式

第一种方式:类型[] 数组名; 如 int[] nums; 
第二种方式:类型数组名[]; 如 int nums[];
大多数Java程序员喜欢使用第一种风格,因为它把数据类型int[],和变量名num分开了.
数组的初始化
Java中数组必先初始化后才能使用.
初始化就是给数组元素分配内存,并为每个元素赋初始值。
初始化数组的两种方式:
- 静态初始化:
语法格式:类型[] 数组名 = new 数组类型[]{元素1,元素2,元素3,...元素n};
简化语法:类型[] 数组名 = {元素1,元素2,元素3...元素n};
- 动态初始化:
如果我们事先不知道数组里存储哪些数据,只知道需要存储数据的个数,此时可以使用动态初始化方式。
动态初始化:初始化时由我们指定数组的长度,系统自动为数组元素分配初始值。
格式:类型[] 数组名 = new 数组类型[数组长度];
注意:无论,以哪种方式初始化数组,一旦初始化完成,数组的长度就固定了,不能改变,除非重新初始化。也就是说数组是定长的。

接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法

用interface关键字定义接口(注意类是用Class定义的,区分开),一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现,这一点和抽象类是不一样的。接口是更高级别的抽象。类可以实现多个接口。

public interface 接口名称{
    //可以定义常量
    //方法只有方法声明,而且是公共的(public)。
    public void 方法名称();
    ...
}

类要实现接口,只需要使用implements关键字,实现类必须要实现接口中的所有的方法

public class 实现类名 implements 接口{
 //实现接口的方法(方法重写)
}

类型转换

基本数据类型由小到大(byte,short,char)--int--long--float--double

对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用强制类型转换

隐式转换(自动类型转换)低级到高级

上面所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。
short s=10;
int i=s;   //将short类型的变量向int类型的变量 
           //赋值时,(从小到大)实现了自动转换
char c='A'; //A的ASCII码值为65
int i=c;    //这时会将'A' 对应的ASCII码值赋值给i

显式转换(强制类型转换)高级到低级

强制类型转换可能造成数据(丢失)溢出;

1、float型转换为double型:

float f1=100.00f;
Float F1=new Float(f1);
//F1.doubleValue()为Float类的返回double值型的方法
double d1=F1.doubleValue();

2、double型转换为int型:

double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();

3、int型转换为double型:

int i1=200;
double d1=i1;

其它类型向字符串的转换

int number = 10;
//通过包装类调用toString方法
String age = Integer.toString(number);
//利用字符串拼接的方法
String age1 = number+"";
//使用String中的valueOf方法
String age2 = String.valueOf(number);

 字符串作为值,向其它类型的转换

静态parseXXX方法

String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

 当然还有其他类型转换,这里就不一一列举了

🍃运算符表达式

运算符:是一种特殊符号,用以表示数据的运算、赋值和比较。
表达式:使用运算符将运算数据连接起来的符合Java语法规则的式子。

 算术运算符:+ - * / % ++ --

算数运算符运算
+
-
*
/
%取余
++自身加1
--自身减1
赋值运算符:= += -= *= /= %=
赋值运算符运算范例结果
=赋值a=3;b=2;a=3;b=2;
+=加等于a=3;b=2;a+=b;a=5;b=2;
-=减等于a=3;b=2;a-=b;a=1;b=2;
*=乘等于a=3;b=2;a*=b;a=6;b=2;
/=除等于a=3;b=2;a/=b;a=1;b=2;
%=模等于a=3;b=2;a%=b;a=1;b=2;

比较运算符:== != > >= < <= instanceof

比较运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
>大于4>3true
<小于4<3false
>=大于等于4>=3true
<=小于等于4<=3false
instanceof检查是否是类的对象"hello" instanceof Stringtrue
逻辑运算符: & && | || ! ^ 
逻辑运算符运算范例结果
&false&truefalse
&&短路与false&&truefalse
|false|truetrue
||短路或false||truetrue
!!truefalse
^异或true^falsetrue
位运算符 :| & ^ ~ >> << >>>
位运算符运算示例
|或运算6&3=2
&与运算6|3=7
^异或运算6^3=5
~反码~6=-7
<<左移3<<2=12 (3*2*2=12)
>>右移3>>2=1 (3/2=1)
>>>无符号右移3>>>1=1 (3/2=1)

🌾格式化

  • System.out.printf();String.format();
  • DecimalFormat
  • SimpleDateFormat
  • NumberFormat
java.lang.String 有一个format() 方法,格式并返回字符串信息

format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数

生成格式化的字符串。

显示不同转换符实现不同数据类型到字符串的转换,如下表:

转换符说明示例
%s字符串类型"abc"
%c字符类型'a'
%b布尔类型true
%d整数类型(十进制)123
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型99.99
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)
%h散列码
%%百分比类型%
%n换行符
%tx日期与时间类型(x代表不同的日期与时间转换符)

搭配转换符的标志,如下表:

标志说明示例
+为正数或者负数添加符号("%+d",15)
-左对齐(指定区域内)("%-5d",15)
0数字前面补0("%04d",99)
空格在整数之前添加指定数量的空格("% 4d",99)
,以“,”对数字分组("%,f",9999.99)
(使用括号包含负数("%(f",-99.99)
#如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0

("%#x",99)

("%#o",99)

<格式化前一个转换符所描述的参数("%f和%<3.2f",99.45)
$被格式化的参数索引("%1$d,%2$s",99,"abc")
package moming;

public class Format {
    public static void main(String[] args) {
        System.out.printf("%+d%n",15);
        System.out.printf("%-5d%n",15);
        System.out.printf("%04d%n",99);
        System.out.printf("% 4d%n",99);
        System.out.printf("%,f%n",9999.99);
        System.out.printf("%(f%n",-99.99);
        System.out.printf("%#x%n",99);
        System.out.printf("%#o%n",99);
        System.out.printf("%f和%<3.2f%n",99.45);
        System.out.printf("%1$d,%2$s%n",99,"abc");
    }
}

运行结果

+15
15   
0099
  99
9,999.990000
(99.990000)
0x63
0143
99.450000和99.45
99,abc

常见日期和时间组合的格式,如下表:

转换符说明示例
c包括全部日期和时间信息周二 8月 02 14:21:20 CST 2022
F“年-月-日”格式2022-08-02
D“月/日/年”格式08/02/22
r“HH:MM:SS PM”格式(12时制)19:29:51 下午
T“HH:MM:SS”格式(24时制)14:21:20
R“HH:MM”格式(24时制)14:21
package moming;

import java.util.Date;

public class Time {
    public static void main(String[] args) {
        System.out.printf("%tc%n",new Date());
        System.out.printf("%tF%n",new Date());
        System.out.printf("%tD%n",new Date());
        System.out.printf("%tr%n",new Date());
        System.out.printf("%tT%n",new Date());
        System.out.printf("%tR%n",new Date());
    }
}

 运行结果

周二 8月 02 19:42:15 CST 2022
2022-08-02
08/02/22
07:42:15 下午
19:42:15
19:42
和日期格式转换符相比,时间格式的转换符要更多、更精确。它可以将时间格式化成时、分、秒甚
至时毫秒等单位。格式化时间字符串的转换符如下表:
转换符说明示例
H2位数字24时制的小时(不足2位前面补0)15
I(大写i)2位数字12时制的小时(不足2位前面补0)03
k2位数字24时制的小时(前面不补0)15
l(小写L)2位数字12时制的小时(前面不补0)3
M2位数字的分钟(不足2位前面补0)03
S2位数字的秒(不足2位前面补0)09
L3位数字的毫秒(不足3位前面补0)015
N9位数字的毫秒数(不足9位前面补0)562000000
p小写字母的上午或下午标记

中:下午

英:pm

z相对于GMT的RFC822时区的偏移量+0800
Z时区缩写字符串CST
s1970-1-1 00:00:00 到现在所经过的秒数1193468128
Q1970-1-1 00:00:00 到现在所经过的毫秒数1193468128984
package moming;

import java.util.Date;

public class Time {
    public static void main(String[] args) {
        System.out.printf("%tH%n",new Date());
        System.out.printf("%tI%n",new Date());
        System.out.printf("%tk%n",new Date());
        System.out.printf("%tl%n",new Date());
        System.out.printf("%tM%n",new Date());
        System.out.printf("%tS%n",new Date());
        System.out.printf("%tL%n",new Date());
        System.out.printf("%tN%n",new Date());
        System.out.printf("%tp%n",new Date());
        System.out.printf("%tz%n",new Date());
        System.out.printf("%tZ%n",new Date());
        System.out.printf("%ts%n",new Date());
        System.out.printf("%tQ%n",new Date());
    }
}

运行结果

19
07
19
7
45
07
805
805000000
下午
+0800
CST
1659440707
1659440707820

字母日期或时间元素表示示例
GEra标志符TextAD
yYear2022;22
M年中的月份MonthJuly;Jul;07
w年中的周数Number27
W月中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday;Tue
aam/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数 (1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time;PST;GMT-08:00
Z时区RFC 822 time zone-0800
package moming;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Dome1 {
    public static void main(String[] args) {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf2 = new SimpleDateFormat("GG ww WW DD FF EE aa");
        SimpleDateFormat sdf3 = new SimpleDateFormat("kk KK hh SS zz ZZ");
        Date d = new Date();
        System.out.println(sdf1.format(d));
        System.out.println(sdf2.format(d));
        System.out.println(sdf3.format(d));
    }
}
2022-08-02 20:11:09
公元 32 01 214 01 周二 下午
20 08 08 182 CST +0800
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沫洺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值