JavaSE基础-(2)Java基础语法:HelloWor

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

一、第一个Java程序

Hello World 用java来跟世界说你好

public class HelloWorld {
	 public static void main(String[] args) {
	        System.out.println("Hello World"); // 输出 Hello World
	    }
}
复制代码

static是比较难以理解的一个关键字,在《Java编程思想》有一句话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途”。简单来说,被static修饰的不需要依赖于任何对象就可以进行访问。
来源于:RUNOOB.COM
来源于:RUNOOB.COM
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

二、基本语法

为增强程序可读性,Java有以下的约定

  1. 类、接口:通常使用名词,且单词首字母要大写(例:HelloWorld )
  2. 方法:通常使用动词,首字母小写,其后用大写分割每个单词(驼峰法:eatFoodFunction)
  3. 常量:全部大写,单词之间用下划线分割(例:PI )
  4. 变量:通常用名词,其后用大写分割每个单词,避免$符号

同时要注意以下几点:

  1. 大小写敏感,Hello与hello在java中是不一样的
  2. 不能使用关键字
  3. 见名知意!尽量一看到变量名就知道这个变量代表什么意思
  4. 源文件的文件名与公共类名一致,并保存为.java
  5. java中基本数据类型:char 2字节(在字符串中一个英文字符或者数字、英文符号等占一个字节)
  6. 静态导入:当使用同一包下静态方法较多时,可以采用静态导入的方法
  7. 构造函数不能使用递归
  8. 递归函数可以有返回值也可以没有
  9. 任何类都可以声明为抽象
  10. 注意:一个类只能具有“ final”,“ abstract”和“ public”作为修饰符
  11. 数字是指0~9,字母指大小写英文字母、下划线(_)和美元符号($),也可以是Unicode字符集中的字符,如汉字
  12. 包(其实就是文件夹,用于对类进行管理):全部小写,多级包用点隔开。一般公司域名反写
  13. 不要使用中文汉字!
  14. 多敲多思考!!!

三、Java注释

Java 支持单行以及多行注释,注释中的字符将被 Java 编译器忽略。
实例:

/**
 * 多行注释
 * @Author:菜菜bu菜
 */

//单行注释:这是一个Java入门程序
public class HelloWorld {
	 public static void main(String[] args) {
		 /* 这个也是单行注释 输出 Hello World*/
	        System.out.println("Hello World"); 
	    }
}

复制代码

四、关键字&标识符

关键字概念及特征

概念:

  • Java关键字是事先定义好的对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

特征:

  • 完全小写
  • 在高级编译器当中有特殊颜色,例如在增强版记事本中(例如Notepad++)有特殊颜色

关键字大全

java中有50个关键字3个保留字,均不能用来命名标识符,分别是
关键字:

关键字 说明 关键字 说明 关键字 说明 关键字 说明 关键字 说明
private 私有的 protected 受保护的 public 公共的 default 默认 abstract 声明抽象
class 声明类 extends 继承 final 最终的 implements 实现(接口) interface 声明接口
native 原生方法(非 Java 实现) new 创建 static 静态 strictfp 精准 synchronized 线程
transient 短暂 volatile 易失 break 跳出循环 case switch 选择 continue 继续
default 默认 do 执行 else 否则 for 循环 if 如果
instanceof 实例 return 返回 switch 根据值选择执行 while 循环 assert 断言表达式是否为真
catch 捕捉异常 finally 有没有异常都执行 throw 抛出一个异常对象 throws 声明一个异常可能被抛出 try 捕获异常
import 引入 package boolean 布尔型 byte 字节型 char 字符型
double 双精度浮点 float 单精度浮点 int 整型 long 长整型 short 短整型
super 父类 this 该类 void 无返回值 goto 关键字 const 关键字

保留字:true、false、null,保留字是java预留的关键字

标识符是什么

凡是可以由自己命名的地方都称为标识符.

  • 例: 项目名 ,包名 ,类名 .方法名

标识符命名规范

  • 不能是关键字   
  • ② 所有标识符必须由一个字母(a-z 或 A-Z)或数字0-9,$和_
  • 不能以数字开头
  • ④ 区分大小写,驼峰命名:FirstName、UserName
  • ⑤ 包名全部小写,类名全部大驼峰式
  • 见名知意

例如:项目名:writetest 包名:com.cai.test 类名:TestDemo

五、常量&变量

常量:程序运行过程中不会改变的量。(字符 ‘b’、字符串 ‘abc’、整数 1、布尔 true|false)

变量:运行过程中可以改变的量。(局部变量、类变量(静态变量)、成员变量(非静态变量))

作用域 : 从定义变量的一行开始,一直到直接所属的大括号结束。

基本数据类型

类型 字节数 最大存储数据量 数据范围
byte 8位 255 -128~127
short 16位 65536 -32768~32767
int 32位 2的32次方减1 -2的31次方到+2的31次方减1
long 64位 2的64次方减1 -2的63次方到+2的63次方减1
float 32位 3.4e-45~1.4e38 直接赋值时必须在数字后加上f或F
double 64位 4.9e-324~1.8e308 赋值时可以加d或D也可以不加
boolean 1位 默认值是 false 只有true和false两个取值
char 16位 存储Unicode码 用单引号赋值

数据类型转换

自动类型转换(隐式):代码不需要进行特殊处理,自动完成,小到大

long num1 = 2021112复制代码

强制类型转换(显式):代码需要进行特殊的格式处理,不能自动完成,大到小

int num=(int2021112复制代码

注意

  • 1.强制类型转换有可能发生精度损失、数据溢出。

  • 2.byte / short / char这三种类型都可以发生数学运算,例如加法“+”.

  • 3.byte/short/char这三种类型在运算的时候,都会被首先向上提升成为int类型,然后再计算。符合ASCII编码表

六、运算符&表达式

在这里插入图片描述

算术运算符

算术运算符:常见的四则运算符、自增、自减,它们的作用和在数学中的作用一样。

运算符 描述 例子
+ 1+1-2
* 2-1=1
* 2*5=10
/ 10/2=5
++ 自增 int a=1;a++ or ++a =2
-- 自减 int a=1;--a or a-- =0
% 取余 - 左操作数除以右操作数的余数 24%=3

实例:

public class Test1{
    public static void main(String[] args){
        int a = 3;
        int b = 3;
        int x = 2*++a;
        int y = 2*b++;
        System.out.println("自增运算符前缀运算后a="+a+",x="+x);
        System.out.println("自增运算符后缀运算后b="+b+",y="+y);
    }
}

复制代码

结果:

自增运算符前缀运算后a=4,x=8
自增运算符后缀运算后b=4,y=6
复制代码

关系运算符

关系运算符:关系运算符有6种关系,分别为小于、大于、小于等于、大于等于、等于、不等于。比较的结果是一个布尔值( true 或 false )

运算符 描述 例子 结果
> 大于 2>1 true
>= 大于等于 2>=1 true
< 小于 2<1 false
<= 小于等于 2<=1 true
== 等于 2==1 false
!= 不等于 2!=1 true

逻辑运算符

逻辑运算符:主要用于进行逻辑运算,连接两个Boolean值,代表两个条件

假设布尔变量A为真,变量B为假

运算符 描述 例子 结果
&& (A && B) false
II (AIIB) true
!(A && B) true
^ 异或 2<=1 (A ^ B)

异或:有且只能有一个为true

实例:

public class Test2 {
  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));
     System.out.println("(a^b) = " + (a ^ b));
  }
}
复制代码

结果:

a && b = false
a || b = true
!(a && b) = true
(a^b) = true
复制代码

赋值运算符

赋值运算符:基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。

运算符 描述 例子 结果
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B 将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A 等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A 等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A 等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A C 与 A 同类型时等价于 C = C / A(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数
<< = 左移位赋值运算符 C << = 2 等价于C = C << 2
>> = 右移位赋值运算符 C >> = 2 等价于C = C >> 2
&= 按位与赋值运算符 C&= 2 等价于C = C&2
^ = 按位异或赋值操作符 C ^ = 2 等价于C = C ^ 2
I= 按位或赋值操作符 C I= 2 等价于C = C I2

位运算符

位运算符:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。

运算符 描述 例子 结果
如果相对应位都是1,则结果为1,否则为0 (A&B) -得到12,即0000 1100
I 如果相对应位都是 0,则结果为 0,否则为 1 - (A B)
^ -如果相对应位值相同,则结果为0,否则为1 -(A ^ B) -得到49,即 0011 0001
-按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 -(〜A) -得到-61,即1100 0011
<< -按位左移运算符。左操作数按位左移右操作数指定的位数 -A << 2 -得到240,即 1111 0000
>> -按位右移运算符。左操作数按位右移右操作数指定的位数 -A >> 2 -得到15即 1111
>>> -按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 - A>>>2 -得到15即0000 1111

实例:

//来源https://www.runoob.com/java/java-operators.html
public class Test2 {
	  public static void main(String[] args) {
	     int a = 60; /* 60 = 0011 1100 */ 
	     int b = 13; /* 13 = 0000 1101 */
	     int c = 0;
	     c = a & b;       /* 12 = 0000 1100 */
	     System.out.println("a & b = " + c );
	 
	     c = a | b;       /* 61 = 0011 1101 */
	     System.out.println("a | b = " + c );
	 
	     c = a ^ b;       /* 49 = 0011 0001 */
	     System.out.println("a ^ b = " + c );
	 
	     c = ~a;          /*-61 = 1100 0011 */
	     System.out.println("~a = " + c );
	 
	     c = a << 2;     /* 240 = 1111 0000 */
	     System.out.println("a << 2 = " + c );
	 
	     c = a >> 2;     /* 15 = 1111 */
	     System.out.println("a >> 2  = " + c );
	  
	     c = a >>> 2;     /* 15 = 0000 1111 */
	     System.out.println("a >>> 2 = " + c );
	  }
	} 
复制代码

结果:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

复制代码

其他运算符

条件运算符(?:):件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
实例:

public class Test3 {
	 public static void main(String[] args) {
         //x ? y : z
         //如果x==true,则结果为y,否则结果为z
         int score = 80;
         String type = score < 60 ? "不及格":"及格";//必须掌握
         //if
         System.out.println(type);
//         System.out.println(type);​
         int score1 = 50;
         String type1 = score < 60 ? "不及格":"及格"; //必须掌握
         //if​
         System.out.println(type1);
	 }
}
复制代码

结果:

及格
及格
复制代码

instanceof 运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
实例:

String name = "Test";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
复制代码

表达式

表达式:用运算符连起来的式子叫做表达式。由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。例如:20+5 。 又例如:a+b

在java中 以 ;结尾的一段代码,即为一个表达式

public class HelloWorld {
    public static void main(String[] args) {
        //每一句话都是一个表达式
        int i = 5;  //①
        System.out.println(5); //②
        ; //③
        ; //④
        ; //⑤
       
    }
}
复制代码

七、数组

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

实例:

public class Test4 {
	public static void main(String args[]) {
		int data[] = new int[3]; /*开辟了一个长度为3的数组*/
		data[0] = 10; // 第一个元素
		data[1] = 30; // 第二个元素
		data[2] = 50; // 第三个元素
		for(int x = 0; x < data.length; x++) {
			System.out.println(data[x]); //通过循环控制索引
		}
	}
}
复制代码

结果:

10
30
50
复制代码

三种方法定义Java数组:

  1. 1.先声明   2.分配空间  3.赋值
  2. 1.声明并分配空间  2.赋值
  3. 1.声明并分配空间然后.赋值

实例:

public class Test5{
	public static void main(String args[]) {
			System.out.println("-----方法一-----");
		    int[] arr;    //先声明
	        arr=new int[5];  //分配空间
	        for(int i=0;i<5;i++)arr[i]=i*10;  //赋值
	        for(int i=0;i<5;i++){
	            System.out.println("arr["+i+"]="+arr[i]);
	        }
	        
	        System.out.println("-----方法二-----");
	        int[] arr1=new int[5];    //声明并分配空间
	        for(int i=0;i<5;i++)arr1[i]=i*10;    //赋值
	        for(int i=0;i<5;i++){
	            System.out.println("arr["+i+"]="+arr1[i]);
	        }
	        
	        System.out.println("-----方法三-----");
	        int[] arr2={20,68,34,22,34}; //声明并分配空间然后.赋值    等同于 int[] arr= new []{20,68,34,22,34};
	        for(int i=0;i<5;i++){ 
	        	System.out.println("arr["+i+"]="+arr2[i]); 
	        	}   
	}
}

复制代码

结果:

-----方法一-----
arr[0]=0
arr[1]=10
arr[2]=20
arr[3]=30
arr[4]=40
-----方法二-----
arr[0]=0
arr[1]=10
arr[2]=20
arr[3]=30
arr[4]=40
-----方法三-----
arr[0]=20
arr[1]=68
arr[2]=34
arr[3]=22
arr[4]=34

复制代码

八、方法

方法:Java方法是语句的集合,这个集合一起执行能完成某个功能。

语法格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){ 
	 执行语句
	 ……… 
	 ……… 
	 return 返回值;
}
复制代码

实例:

 public static void main(String[] args){
   int sum = add(1,2); // 1、2是实参
   System.out.println(sum); //输出3
 }
 // a、b属于形式参数,可以定义为任何符合命名规则的名字
 public static int add(int a, int b){
   return a+b;
 }
复制代码

注:在设计程序的时候尽量把main方法中的内容都抽象出来,作为一个方法调用,因为main方法在栈中(先进后出)。

致谢

  1. Java中数组定义的三种方式
  2. Java中数组的定义与使用(一)
  3. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
  4. 5、位运算符(7个):实例
  5. JAVA运算符及实例
  6. 浅谈Java变量赋值运算符及相关实例
  7. Java赋值运算符
  8. 逻辑运算符&& || !
  9. 逻辑运算符
  10. 什么是Java的表达式
  11. 表达式
  12. .runoob.com
  13. Java基础语法(总结篇)
  14. java中什么是方法以及方法怎么定义
  15. Java方法详解,什么是方法?