java从入门到精通二(Java编程基础)

时间:2020-9-2 作者:admin




序言:这篇文章来总结java编程基础相关的知识。由于内容比较多,可能会分成几章来总结。话不多说,进入内容。


1:java的基本语法:
1.1:java代码的基本格式:
我们来看上期的代码片

package hello;

public class Hello {
    public static  void main(String args[]){
        System.out.println("Hello");
    }
}

我这里的java程序代码是在一个类下,class为关键字,是为申明一个类的。我们的Hello在这里就是类名,注意java严格区分大小写,我们的类名一定要大写,class这个关键字一定要小写。上面的package是我的包名,我的类Hello在我的包hello下,我的包下可以有多个类文件。大家要注意,我的包是在一个项目下的,一个项目下可以有多个包。
我们看idea里这些的级别关系,如下图
java从入门到精通二(Java编程基础)
我的项目名为creat_java,当你建好一个项目后,就会出现src,我们需要在它下建立包,然后再建立类,我们编写java文件的步骤就是这样。
大家再看这个代码片
我们的class前有个public关键字,其实可以叫做修饰符,这个public的作用在目前是这样的,其实我们的一个类可以有多个申明的类,当你其中的一个类用public修饰后,就代表是主类了,那么你的类名必须与他保持一致,否则出错,当然如果你的类单纯的只有他自己,那么即使你不给他public修饰也可以,因为他就被默认为主类了。

package hello;

public class Hello {
    public static  void main(String args[]){
        System.out.println("Hello");
    }
}

我们还要注意,你在定义一个包名的时候,就不要使用java这个名字,这样是会报错的,起码在idea中是会报错的,因为这个java会与java的类库发生冲突,重名了,会被认为是不安全的。
下面的几句基本就是固定的格式了,我们上一章提到过,public static void main这里以后,代表了程序的入口,并不是所有的被class定义的类都要写这句,只有主程序才要写,一个类中,不管你定义多少个类,主类只能有一个,否则程序就会出现问题,正所谓一山不容二虎。System.out.println(“”);这里是简单的输出语句,当然你就算print(“”)也是没有问题的,他俩的区别就是一个输出后换行,一个不换行。
1.2:java中的注释
其实注释是为了让他人来更好的看出你写的程序是干嘛用的,适当的注释也是程序猿一个良好的习惯,当我们编写的程序过于长而中途停止时,我们可以先写上注释来标明这段代码是干嘛用的,以方便以后的阅览。
我们的注释分三种:单行注释;多行注释;文档注释。
我们直接上代码片来说明:

package hello;
/**
 文档注释,对代码概括性的解释说明,可以使用javadoc命令将文档注释提取出来以帮助生成文档。
 */

public class Hello {
    /*
    多行注释,我要写几行注释
     */
    public static  void main(String args[]){
        System.out.println("Hello");//单行注释,只能写一行注释
    }
}

1.3:java中的标识符:
简单的说标识符就是用来标记一些名称,像我们java中用到的包名,类名,方法名,变量名等等都是。我们来讲标识符的使用规则。
标识符可以由字母,数字,下划线,美元符号组成,但不能以数字开头,不能用java中的关键字(像class,public,static,private…)
我们的包名一律小写,我们的类名和接口一律大写。
变量名所有字母都大写,单词之间用下划线连接,或者,变量名和方法名的第一个单词首字母小写。从第二个单词开始,每个首字母大写。
如果你要问为什么这样规定,那原因就是这是规定,如果你要问为什么这样规定,那就是没有规矩不成方圆。啊哈哈哈。
1.4java中的关键字:
▪ abstract
▪ boolean
▪ break
▪ byte
▪ catch
▪ char
▪ class
▪ continue
▪ default
▪ do
▪ double
▪ else
▪ extends
▪ false
▪ final
▪ finally
▪ float
▪ for
▪ if
▪ implements
▪ import
▪ instanceof
▪ int
▪ interface
▪ long
▪ native
▪ new
▪ null
▪ package
▪ private
▪ protected
▪ public
▪ short
▪ static
▪ super
▪ switch
▪ synchronized
▪ this
▪ throw
▪ throws
▪ transient
▪ try
▪ true
▪ void
▪ volatile
▪ while
有关对这些关键字的了解
关键字 含义
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package 包
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中
很多目前理解不了不要紧,我们最常用的会在后面的学习中遇到,切记,不需要刻意去记。
1.4:java中的常量
整型常量

整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式具体表示形式如下。

二进制:由数字0和1组成的数字序列。在JDK7.0中允许使用字面值来表示二进制数,前面要以0b或0B开头,目的是为了和十进制进行区分,如0b01101100、0B10110101。

八进制:以0开头并且其后由0~7范围内(包括0和7)的整数组成的数字序列,如0342。

十进制:由数字0~9范围内(包括0和9)的整数组成的数字序列。如198。

十六进制:以0x或者0X开头并且其后由09、AF(包括0和9、A和F)组成的数字序列,如0x25AF。

需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如0711,0123;十六进制必须以0x或0X开头,如0xaf3、0Xff;整数以十进制表示时,第一位不能是0,0本身除外。例如十进制的127,用二进制表示为011111八进制表示为017,用十六进制表示为0x7F或者0X7F。

浮点数常量

分为foat单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:

2e3f 3.6d 0f 3.84d 5.022e+23f

字符常量

字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引’’号引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。具体示例如下:

‘a’ ‘1’ ‘&’ ‘\r’ ‘\u0000’

布尔常量

布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。

null常量

null常量只有一个值null,表示对象的引用为空。

这些对常量的描述都是书上的内容,黑马的教材很专业。我们学校java就是用的他们的教材。
1.5我们来看java中的变量
变量顾名思义,就是可以改变的数据,我们来看如何定义变量。我们来看代码片。
下面展示一些 内联代码片

package hello;

public class var {
    public  static void main(String args[]){
        int a;//整型变量
        double b;//浮点双精度类型变量
        float c;//浮点单精度类型变量
        char d;//字符型变量
    /*
    很多,不再一一举例
     */
    }

}


先解释下变量的数据类型
我们来看图,这里补充一点,在引用数据类型里我们还有枚举(enum)和注解(annotation)。不太常用。
java从入门到精通二(Java编程基础)
我们来看一些数据类型变量
java从入门到精通二(Java编程基础)
注意:在我们在定义这些整数类型或者浮点数类型变量时一定不要超出类型变量的取值范围。当然,我们一般是不会越界的,因为我们不会基本不会用到太大或者太小的数据。
我们在定义一个long类型的数据时,后面要加上一个l后者L的字母结尾,如果不加,默认为int类型的变量,这就要求你定义的变量不要超出int类型的取值范围了,当然这些越界的问题基本不会存在。
我们来看浮点数类型
浮点数类型分为两种,一个是double,这个是双精度的,一个是float,这个是单精度的。说白了,双精度的变量类型就是比单精度的变量类型小数的保留位数多而已,这是使用上的区别。当然,在占用内存上,单精度的占用32位,也就是4个字节,而双精度占用的就是64位,也就是8个字节。在java中,一个小数会被默认为双精度类型,也就是double类型,如果你要指定为float类型,那么在数值后一定要加上f或者F。
我们来看示例

float f =1.34f//为ifloat类型赋值,后面加上f或者F
double d1 = 3.13d;
double d2 = 3.14;
//为double类型的变量赋值,就不需要加上或者D了。

我们再来看字符类型变量的使用说明
字符类型是存储单一字符的,我们用char表示,char类型的变量都会占用两个字节。再给char类型变量赋值时,我们要给值加上单引号,’’,我们要的是英文半角格式的单引号。我们还可以直接给定数字,像97,就代表了字符a。
我们来看示例

char c = 'a';
char c1 = 97;


我们来说明布尔类型变量
布尔类型变量只有两个值,那就是true和false,真和假,真假美猴王。
我们来看示例

boolean b = false;
boolean b1 = true;


1.6变量的类型转换
变量的类型转换其实就是常常发生在运算中的.。我们可以分为自动类型转换,和强制类型转换。自动类型转换变其实就是常常发生在运算中的.。是自己自动装换的,而强制类型装换,使我们自己来转换的。当一个类型的变量转换为取值范围比他大的变量类型时,就都是可以的。
我们来写代码感受一下。

public class var {
    public  static void main(String args[]){
        byte b = 5;
        int a = b;
        System.out.println(a);

我们来看运行效果。
java从入门到精通二(Java编程基础)
控制台给出a的值是5,那我们这样做是可以的。
下面,我们来看错误示例。

public class var {
    public  static void main(String args[]){
        int b = 5;
        byte a = b;
        System.out.println(a);


我们来看运行结果,我们在idea里看java从入门到精通二(Java编程基础)
我们把Error拿出来。
Error:(6, 18) java: 不兼容的类型: 从int转换到byte可能会有损失
我们这样写是不对的
那我们非要这样写,又不想让它出现错误,我们这样写看看

public class var {
    public  static void main(String args[]){
        int b = 5;
        byte a = (byte)b;
        System.out.println(a);


我们给他强制类型转换。控制台输出如下
java从入门到精通二(Java编程基础)
这里没有报错,正常输出。
但其实如果我们int类型的变量的值很大,或者说比byte类型的取值范围要大,我们看发生什么,会不会有缺失。
我们来看代码
下面展示一些 内联代码片

public class var {
    public  static void main(String args[]){
        int b = 298;
        byte a = (byte)b;
        System.out.println(a);

我们来看运行结果:
java从入门到精通二(Java编程基础)
这里给出我的是42,我们可能会一脸懵逼。这里我们想想,byte类型最多取到2的七次方减一,也就是127,我们的128他是容不下的。那么四十二又是哪来的?
我们的int类型占用4个字节,也就是32位,而byte占用一个字节,也就是8位。转换后,我们会丢失24位,也就是前3个字节会丢,我们计算机内存中将最后的可以保留下的一个字节进行了二进制转换为十进制,就是42了。
1.7:我们来看变量的作用域
很简单地说,变量只能作用域他所在的括号内
来看代码

class Var{
	public static void main(String args[]){
		int a = 5//这个a只能在这一成括号里有效。
}

}

我们再看一些java中的运算符
运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
我们来看算术运算符
java从入门到精通二(Java编程基础)
以上是我们常见的几种
我们要注意一点,关于%,称之为取模运算,他的结果我们可以这样来说明
(-5) % 3 = -2,而5 %(-3)= 2。可以看出是与符号结果正负是与负号所在的位置有关的。
我们来看赋值运算符
java从入门到精通二(Java编程基础)
我们可以这样对多个变量赋值:
int x,y,z;
x=y=z = 4;
但我们不可以这样int x=y=z = 4;
我们来看关系运算符
java从入门到精通二(Java编程基础)
我们来看逻辑运算符
java从入门到精通二(Java编程基础)
我们注意一点。&和&&还是有很大区别的,虽然都是与操作,相同的地方是,当两边的运算都为true时,运算结果才为true,否则就是false。不同的是在使用&运算时。不论左边结果是啥,他两边的表达式都会运算,而&&就不一样了,当左边为false时,右边就不会进行运算.
我们来看算术符的优先级
java从入门到精通二(Java编程基础)
注:本章就到这里了,下一章总结相关的语句,方法,和数组。欢迎关注。
祝大家学好编程。
相关的请遵守csdn协议
—-博主jgdabc
更多内容点击这里—-jgdabc

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。