知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术  > 批处理

JavaSE基础语法

发表时间:2022-03-22来源:网络

平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到一个注释了,注释就类似于我们上学时候写的笔记,我们看着笔记就知道自己写的什么东西了!在程序中也是如此。我们来看一下Java中的注释怎么写,看以下代码:
/* * @Description HelloWorld类 * @Author Diamond CHAI **/ public class HelloWorld { /* 这是我们Java程序的主入口, main方法也是程序的主线程。 */ public static void main(String[] args) { //输出HelloWorld! System.out.println("Hello,World!"); } }

注释并不会被执行,是给我们写代码的人看的,书写注释是一个非常好的习惯,在很多大公司都是强制
要求各位去进行编写注释!比如,我们的BAT三大巨头等等
Java中的注释有三种:
单行注释:只能注释当前行,以//开始,直到行结束

//输出HelloWorld!

多行注释:注释一段文字,以/开始, /结束!

/* 这是我们Java程序的主入口, main方法也是程序的主线程。 */

标识符

每个人从出生开始就有一个名字,咋们生活中的所有事物也都有名字,这名字是谁规定呢?回答是:造
物主,谁生产出来的谁规定名字,在我们的程序中也不例外。
我们作为造物主,需要给所有的东西给上一个名字,比如我们的HelloWorld程序:
HelloWorld是类名,也是我们的文件名。它前面的 public class是关键字,不过是搞Java那群人已经定
义好的有特殊作用的,下面的每一个代码都有自己的意思和名字对吧,就是用来作区分!和我们的名字
一样,拿来被叫或者称呼的,程序一切都源自于生活,一定要把学程序和生活中的一切联系起来,你会
发现这一切都是息息相关的。

Java自己定义好的关键字

这些看起来非常的多,但是随着我们以后的学习我们都会用到,所以完全不用担心自己 看不懂,这些被
Java已经规定的关键字,我们自己就不能拿它当做名字了!
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
我们自己起名字有哪些要求呢?
表示类名的标识符用大写字母开始。

如:Man, GoodMan

表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始。

如:eat(),eatFood() //驼峰命名法

关于 Java 标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z 或者 a-z),美元符( ) 、 或 者 下 划 线 ( ) 开 始 首 字 符 之 后 可 以 是 字 母 ( A − Z 或 者 a − z ) , 美 元 符 ( )、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者 a-z),美元符( )、或者下划线()开始首字符之后可以是字母(A−Z或者a−z),美元符()、下划线(_)或数字的任何字符组合
不能使用关键字作为变量名或方法名。
标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value

非法标识符举例:123abc、-salary、#abc

【 JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的
字母的含义:可以表示英文、汉字等等。】
【可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low】

数据类型

Java是一种强类型语言,每个变量都必须声明其类型

1.强弱类型语言

强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使
用。
Java、.NET、C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果
不经过转换,那么它就永远是这个数据类型了。
安全性高,运行效率相对较慢,鱼和熊掌不可兼得!强类型定义语言在速度上可能略逊色于弱类型定义
语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
与其相对应的是弱类型语言。

弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言·
在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,也可以把它看成整数123,而不需
要显示转换。是不是十分的随便,我们Java就不是这样的。
但其实它们的类型没有改变,VB只是在判断出一个表达式含有不同类型的变量之后,自动在这些变
量前加了一个clong()或(int)()这样的转换函数而已。能做到这一点其实是归功于VB的编译器的
智能化而已,这并非是VB语言本身的长处或短处。

2.数据类型

java的数据类型分为两大类:基本类型和引用类型


【注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!】

不用记用的时候直接代码

public static void main(String[] args) { // byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); System.out.println("包装类:java.lang.Byte"); System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本类型:short 二进制位数:" + Short.SIZE); System.out.println("包装类:java.lang.Short"); System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); System.out.println("包装类:java.lang.Integer"); System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本类型:long 二进制位数:" + Long.SIZE); System.out.println("包装类:java.lang.Long"); System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); System.out.println(); // float System.out.println("基本类型:float 二进制位数:" + Float.SIZE); System.out.println("包装类:java.lang.Float"); System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本类型:double 二进制位数:" + Double.SIZE); System.out.println("包装类:java.lang.Double"); System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); System.out.println(); // char System.out.println("基本类型:char 二进制位数:" + Character.SIZE); System.out.println("包装类:java.lang.Character"); // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE); // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE); }

相关科普

/* 位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示, 1B(byte,字节)= 8bit(位) 字符:是指计算机中使用的字母、数字、字和符号 ASCIIS码: 1个英文字母(不分大小写)= 1个字节的空间 1个中文汉字 = 2个字节的空间 1个ASCII码 = 一个字节 UTF-8编码: 1个英文字符 = 1个字节 英文标点 = 1个字节 1个中文(含繁体) = 3个字节 中文标点 = 3个字节 Unicode编码: 1个英文字符 = 2个字节 英文标点 = 2个字节 1个中文(含繁体) = 2个字节 中文标点 = 2个字节 1bit表示1位, 1Byte表示一个字节 1B=8b。 1024B=1KB 1024KB=1M 1024M=1G. */ /* 32位操作系统只可以使用32位的cpu,而64位的CPU既可以安装32位操作系统也可以安装64位操作 系统。 寻址能力简单点说就是支持的内存大小能力,64位系统最多可以支达128 GB的内存,而32位系统最 多只可以支持4G内存。 32位操作系统只可以安装使用32位架构设计的软件,而64位的CPU既可以安装使用32位软件也可以 安装使用64位软件。 现在的电脑都是64位了! */ public static void main(String[] args) { //整型 int i1=100; //长整型 long i2=998877665544332211L; //短整型 short i3=235; //浮点型 double d1=3.5; //双精度 double d2=3; float f1=(float)3.5; //单精度 float f2=3.5f; //单精度 //布尔类型 boolean true真/false假 boolean isPass=true; boolean isOk=false; boolean isBig=5>8; if(isPass){ System.out.println("通过了"); }else{ System.out.println("未通过"); } //单字符 char f='女'; char m='男'; }

Java语言的整型常数默认为int型,浮点数默认是Double

3.整型拓展

十进制整数,如:99, -500, 0。 八进制整数,要求以 0 开头,如:015。 十六进制数,要求 0x 或 0X 开头,如:0x15 。 //整型 int i=10; int i2=010; int i3=0x10; System.out.println(i); //10 System.out.println(i2); //8 System.out.println(i3); //16

4.浮点型拓展

【金融面试问:银行金融业务用什么类型表示?】
浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类

public static void main(String[] args) { float f = 0.1f; double d = 1.0/10; System.out.println(f==d); //false float d1 = 2131231231f; float d2 = d1+1; if(d1==d2){ System.out.println("d1==d2"); }else{ System.out.println("d1!=d2"); } }

主要理由:
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很
多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样
10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
最好完全避免使用浮点数比较 !
大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数
值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
浮点数使用总结:

默认是double浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需
要使用BigDecimal类。避免比较中使用浮点数

5.字符型拓展

单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。
char 类型用来表示在Unicode编码表中的字符。.
Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;
【科普:2字节=16位 2的16次方=65536,我们用的Excel原来就只有这么多行,并不是无限的】
【代码演示:字符转int看结果】

public static void main(String[] args) { char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int) c1); //97 System.out.println(c2); System.out.println((int) c2); //20013 }

Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为
u表示Unicode)

char c3 = '\u0061'; System.out.println(c3); //a

Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义,有如下常用转义字符:

//代码1 String sa=new String("Hello world"); String sb=new String("Hello world"); System.out.println(sa==sb); // false //代码2 String sc="Hello world"; String sd="Hello world"; System.out.println(sc==sd); // true

6.布尔类型拓展

boolean类型(一位,不是一个字节),就是0|1
boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
boolean 类型用来判断逻辑条件,一般用于程序流程控制。

boolean flag = false; if(flag){ // true分支 }else{ // false分支 }

【编码规范:很多新手程序员喜欢这样写】

if (is == true && un == false ) {...}

只有新手才那么写。对于一个熟练的人来说,应该用如下方式来表示

if ( is && !un ) {....}

类型转换

由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
整型、实型(常量)、字符型数据可以混合运算。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级(根据容量来看)。

低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:
不能对boolean类型进行类型转换。
不能把对象类型转换成不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
转换过程中可能导致溢出或损失精度,例如:

int i =128; byte b = (byte)i;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢
出。

浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

(int)23.7 == 23; (int)-45.89f == -45

1.自动类型转换

自动类型转换:容量小的可以自动转换为容量大的数据类型

例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为
32,可以自动转换为64位的double类型。

public class ZiDongLeiZhuan{ public static void main(String[] args){ char c1='a';//定义一个char类型 int i1 = c1;//char自动类型转换为int System.out.println("char自动类型转换为int后的值等于"+i1); char c2 = 'A';//定义一个char类型 int i2 = c2+1;//char 类型和 int 类型计算 System.out.println("char类型和int计算后的值等于"+i2); } //【解析:c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以i2=65+1=66。】

2.强制类型转换

强制类型转换,又称为造型,用于显式的转换一个数据类型

在用可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出

强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类
型。 条件是转换的数据类型必须是兼容的。

public static void main(String[] args) { double x = 3.14; int nx = (int)x; //值为3 char c = 'a'; int d = c+1; System.out.println(d); //98 System.out.println((char)d); //b }

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。

public static void main(String[] args) { int x = 300; byte bx = (byte)x; //值为44 System.out.println(bx); }

3.常见错误和问题

操作比较大的数时,要留意是否溢出,尤其是整数操作时;

public static void main(String[] args) { int money = 1000000000; //10亿 int years = 20; int total = money*years; //返回的是负数 long total1 = money*years; //返回的仍然是负数。默认是int,因此结果会转成 int值,再转成long。但是已经发生了数据丢失 long total2 = money*((long)years); //先将一个因子变成long,整个表达式发 生提升。全部用long来计算。 System.out.println(total); System.out.println(total1); System.out.println(total2); }

L和l 的问题:
不要命名名字为l的变量
long类型使用大写L不要用小写。

public static void main(String[] args) { int l = 2; long a = 23451l; System.out.println(l+1); //3 System.out.println(a); //23451 }

变量、常量

1.变量

量是什么:就是可以变化的量!
我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放
置什么值不确定! 打个比方:
这就好像我们家里有一个大衣柜,里面有十分多的小格子,我们给格子上贴上标签,放衣服,放鞋子,
放手表等等,此时我们知道了哪里该放什么,但是,我们并不知道里面到底放的是什么牌子的鞋子,是
衣服还是裤子。那个标签就相当于我们的变量,我们给他起了个名字,但是里面要放什么需要我们自己
去放。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:

type varName [=value] [{,varName[=value]}] ; //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。

注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束

int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 byte z = 22; // 声明并初始化 z String s = "runoob"; // 声明并初始化字符串 s double pi = 3.14159; // 声明了双精度浮点型变量 pi char x = 'x'; // 声明变量 x 的值是字符 'x'。 //虽然可以在一行声明多个变量,但是不提倡这个风格,逐一声明每一个变量可以提高程序可读性。

2.变量作用域

变量根据作用域分为三种:

静态变量:独立于方法之外的变量,static修饰

成员变量:独立于方法之外的变量,不过没有static的修饰

局部变量:类的方法中的变量

public class Variable{ static int allClicks=0; // 静态变量 String str="hello world"; // 成员变量 public void method(){ int i =0; // 局部变量 } }

局部变量

方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。
在使用前必须先声明和初始化(赋初值)。
局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

public static void main(String[] args) { int i; int j = i+5 ; // 编译出错,变量i还未被初始化 System.out.println(j); }

实例变量

方法外部、类的内部定义的变量。
从属于对象,生命周期伴随对象始终。
如果不自行初始化,他会自动初始化成该类型的默认初始值
(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

public class Test { // 这个实例变量对子类可见 public String name; // 私有变量,仅在该类可见 private double salary; ... }

静态变量

使用static定义。
从属于类,生命周期伴随类始终,从类加载到卸载。
(注:讲完内存分析后我们再深入!先放一放这个概念!)
如果不自行初始化,他会自动初始化成该类型的默认初始值
(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)

public class Employee { //salary是静态的私有变量 private static double salary; // DEPARTMENT是一个常量 public static final String DEPARTMENT = "开发人员"; public static void main(String[] args){ salary = 10000; System.out.println(DEPARTMENT+"平均工资:"+salary); } }

3.常量

常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

final 常量名=值; final double PI=3.14; final String LOVE="hello";

常量名一般使用大写字符。
程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以
定义一个常量 SEX,赋值为 “男”,在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的
不规范赋值导致程序出错的情况。

4.变量的命名规范

所有变量、方法、类名:见名知意类成员变量:首字母小写和驼峰原则 : monthSalary局部变量:首字母小写和驼峰原则常量:大写字母和下划线:MAX_VALUE类名:首字母大写和驼峰原则: Man, GoodMan方法名:首字母小写和驼峰原则: run(), runRun()

运算符

运算符operator
Java 语言支持如下运算符:
算术运算符: +,-,,/,%,++,–
赋值运算符 =
关系运算符: >,=,>,> (了解!!!)
条件运算符 ?:
扩展赋值运算符:+=,-=,=,/=

1.二元运算符

整数运算
如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.

public static void main(String[] args) { long a = 1231321311231231L; int b = 1213; short c = 10; byte d = 8; System.out.println((a+b+c+d)); //Long类型 System.out.println((b + c + d));//Int类型 System.out.println((c + d));//Int类型 }

浮点运算
如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float

public static void main(String[] args) { float a = 3.14565F; double b = 3.194546464; float c = 1.3123123F; System.out.println(a+b); //double类型 System.out.println(b+c); //double类型 System.out.println(a+c); //float类型 }

关系运算符
返回布尔值!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AJJzlPpF-1594276392799)(C:\Users\哦吼吼\AppData\Roaming\Typora\typora-user-images\image-20200709141528373.png)]

2.取模运算

就是我们小学的取余; 5%3 余 2
其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.000000004
要点:
负数%负数=负数;
负数%正数=负数;
正数%负数=正数;

public static void main(String[] args) { System.out.println(9 % 4); //1 System.out.println(-9 % -4); //-1 System.out.println(-10 % 4); //-2 System.out.println(9 % -4); //1 }

3.一元运算符

自增(++)自减(–)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,
而自增自减运算符是一个操作数,分为前缀和后缀两种。

public static void main(String[] args) { int a = 3; int b = a++; //执行完后,b=3。先给b赋值,再自增。 int c = ++a; //执行完后,c=5。先自增,再给b赋值 }

注意:java中的乘幂处理

public static void main(String[] args) { int a = 3^2; //java中不能这么处理, ^是异或符号。 double b = Math.pow(3, 2); } //Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法!

4.逻辑运算符

逻辑与:&&和&,逻辑或:||和|,逻辑非:!。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vVtUbHQ-1594276392801)(C:\Users\哦吼吼\AppData\Roaming\Typora\typora-user-images\image-20200709141819377.png)]

public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); }

逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。在两个操作数都为
true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断
第二个操作了。
逻辑与只要有一个为false, 则直接返回false.
逻辑或只要有一个为true, 则直接返回true;

public static void main(String[] args){ int a = 5;//定义一个变量; boolean b = (a int score = 80; String type = score
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜