前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【02】JAVASE-Java基础语法【从零开始学JAVA】

【02】JAVASE-Java基础语法【从零开始学JAVA】

作者头像
用户4919348
发布2024-05-25 13:53:34
560
发布2024-05-25 13:53:34
举报
文章被收录于专栏:波波烤鸭

Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。

二、Java基础语法

1. 关键字

​ Java关键字:是Java语言保留供内部使用的,比如class 用户与定义类。关键字也可以称为保留字,他们的意思是一样的。

代码语言:javascript
复制
public class HelloWorld
{
    public static void main(String[])
    {
        System.out.println("HelloWorld...");
    }
}

​ 关键字是Java语言事先定义的,有特殊的意义的标识符,简而言之就是在高级记事本或者IDE中颜色会改变的单词就是关键字

关键字

abstract

assert

boolean

break

byte

case

catch

char(character)

class

const

continue

default

do

double

else

extends

final

finally

float

for

goto

if

implements

import

null

package

private

protected

public

return

short

static

strictfp

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

注意:不需要刻意的去背!后面我们会慢慢的接触到每个关键字的用法

关键字的特点

  1. 关键字基本都是由小写字母组成的
  2. Java语言规定关键字是不能作为标识符
  3. 目前Java中共有50个关键字 其中"const"和"goto"这两个关键字在Java中是没有具体的含义的,预留的关键字。在其他的编程语言中"const"和"goto"都是关键字

课堂小案例:

判断一下单词哪些是关键字:

class HelloWorld public static void main String System out println

class:类名

public:共有的

static:静态的

void:没有返回结果

2. 标识符

​ 标识符:等同于现实生活中的取名字,Java中对包、类、方法、参数和变量等要素命名的时候使用的字符序列称为标识符。 简而言之就是给类,接口,方法等起名字。

2.1 标识符的命名规则

规则:一定要遵守的,如果违反那么编译会报错

  1. 是由字母、数字、下划线_、美元符$组成
  2. 不能以数字开头
  3. 区分大小写
  4. 不能使用Java中的关键字
2.2 标识符的命名规范

规范:大家相互约定,都会遵守,如果不遵守编译不会报错

  1. 驼峰命名法(schoolName)
  2. 见名知意(使用有意义的英文单词)
  3. 命名的长度不要超过31个字符
2.3 开发中标准的规范

​ 针对开发中对 包、类、抽象类、接口和实现类、变量、方法、常量的命名规范

2.3.1 包

​ 也就是文件夹

  1. 一般都是用公司域名的反写
  2. 所有的单词使用"."隔开
  3. 每个单词都是小写的
代码语言:javascript
复制
// www.bobo.com 
com.bobo.www
com.bobo.oa
2.3.2 类(抬头骆驼)
  1. 所有的单词的首字母大写,其他字母小写
  2. 见名知意

eg: HelloWorld IdentifiedDemo

2.3.3 接口(抬头骆驼)
  1. 所有的单词的首字母大写,其他字母小写 interface
  2. 一般会在第一个单词的前面添加一个大写的 “I”

eg: IStudent IPerson IUserService

2.3.4 接口的实现类(抬头骆驼)
  1. 所有的单词的首字母大写,其他字母小写
  2. 一般我们会在最后一个单词后面追加"Impl" implements

eg: StudentImpl PersonImpl UserServiceImpl

2.3.5 抽象类(抬头骆驼)
  1. 所有的单词的首字母大写,其他字母小写
  2. 在单词的开头一般都会加上 “Abs” Abstract

eg: AbsStudent AbsPerson

2.3.6 变量(低头骆驼)
  1. 第一个单词首字母小写,其他单词首字母大写
  2. 一般都是名词

eg: studentName studentAge score totalScore

2.3.7 方法(低头骆驼)
  1. 第一个单词首字母小写,其他单词首字母大写
  2. 一般是动词

eg: getTotalScore getAvgScore getMaxScore getMinScore

2.3.8 常量
  1. 所有的单词都是大写
  2. 每个单词间都有"_"分割

eg: MAX_VALUE MIN_VALUE

面试题:说一说你对Java规范的理解

3. 注释

注释的概念:

​ 为程序进行解释说明的,编译期不会对注释进行编译操作

注释的好处:

  1. 是代码的可读性提高
  2. 开发中工作项目交接更加顺畅
  3. 程序调试更方便

单行注释: //

多行注释: /* 在此处写我们的注释内容 */ 多行注释是不能嵌套的

文档注释: /** */

注意:

  1. 文档注释可以是javadoc工具来生成API,后续会介绍
  2. 初学者一定要养成良好的习惯,先写注释,再写代码
  3. 开发中的注释不能随便删除
代码语言:javascript
复制
public class zhushi
{
	/**
	 *  我们的第一个main方法
	 */
	public static void main(String[] args){
		// 声明一个变量 测试
		/*
			注释1
			注释2
			注释3
			
		*/
		String userName = "张三";
	}
}

4. 常量和变量

4.1 常量
4.1.1 什么是常量

​ 在程序的执行过程中,值不会发生改变的量

4.1.2 为什么要用常量

​ 一周有7天

​ PI:3.1415926

​ 一年有12个月

4.1.3 常量的分类

字面值常量

​ 就是具体的值

1.) 整数常量

​ 大家要注意整数的进制。

  1. 二进制 由 0 1组成,常量表示二进制 0b开头 0b010110
  2. 八进制 由0~7组成,由 0 开头 012
  3. 十进制 由0~9组成,默认就是十进制
  4. 十六进制 由0~9 ABCDEF组成,开头 0x

2.) 小数常量

  1. float 单精度小数 0.5F
  2. double 双精度 0.5D 默认

float,double后面会具体的来介绍这两个类型

3.) 布尔型常量

​ 用来表示 “真” “假”,在程序中布尔型只有两个值 true false

4.) 字符常量

什么是字符:字符串中的最小单位,包括字母,数字,运算符,标点符号和其他符号

字符本质上还是数字

针对有特殊含有的字符我们需要通过转义符来实现 “\”

​ \t 制表 \n 换行 \r\n 换行 \R 换行 \’ \"

5.) 字符串常量

  1. 由双引号包裹
  2. 里面可以有一个字符也可以有多个字符还可以没有字符
代码语言:javascript
复制
public class ConstantDemo
{
	public static void main(String[] args)
	{
		// 整数 常量
		System.out.println(10);
		// 二进制常量 13
		System.out.println(0b01101);
		// 八进制 10
		System.out.println(012);
		// 十六进制 65535
		System.out.println(0xFFFF);

		System.out.println(5.5f);
		System.out.println(5.6D);

		System.out.println(true);
		System.out.println(false);
		// 字符 '' 单引号不能为空
		System.out.println('\'');
		// 字符串常量  必须写在一对 双引号之内
		System.out.println("HelloWorld");
		System.out.println("");
		// System.out.println(null);

	}
}

1.3.2 自定义常量

​ 后面章节中会和大家介绍

4.2.变量

变量的定义:在程序的执行过程中,其值可以发生改变的量。类似于数学中的未知数 X

变量的本质:就是一个地址

变量的三要素:

  1. 声明
  2. 赋值
  3. 使用
代码语言:javascript
复制
public class VariableDemo
{
	public static void main(String[] args)
	{
		// 定义一个变量  租房子 我  我要租一个两室一厅的房子
		int a ;// 声明了一个变量
		a = 20; // 赋值操作 将一个常量赋值给了一个变量
		System.out.println(a); // 使用
		a = 50;
		System.out.println(a); // 使用
		int b = 100; // 声明和赋值一块执行
		System.out.println(b);
        int c,d,e; // 声明多个变量可以通过,连接
		c = 1;
		d = 2;
		e = 3;
		int c1 = 20,d1=30,e1=40; // 这种方式语法上支持,但是不推荐  推荐一行声明一个变量
	}
}

注意点:

  1. 变量一定要先声明再赋值在使用
  2. 变量的定义不能够重复
  3. 不能够连续定义变量 int x=y=z=123;
  4. 建议一行只写一条语句

5.基本数据类型和转换

5.1 计算机单位

​ 计算机能识别是只有二进制文件01

eg:10010101010101

单位

说明

1位

上面的每一个0或者1就是一位

1B

1B=1*8 字节,1一个字节等于8位 0000 0000 10000 0000 -1 -128~127

1KB

1KB=1024*B

1MB

1MB=1024*1KB

1GB

1GB=1024*1MB

1TB

1TB=1024*1GB

5.2 数据类型

​ Java是一门强类型的语言。针对于每一种数据都提供的对应的数据类型

5.2.1 基本数据类型
5.2.2 引用数据类型

​ 后面专门介绍

  1. 类(class)
  2. 接口(interface)
  3. 数组([])
5.3 数据类型转换

数据类型转换的依据:取决于数据的取值范围

5.3.1 自动类型转换

我们将取值范围小的数据保存到取值范围大的数据类型中的时候是可以自动转换类型的

代码语言:javascript
复制
public class DataTypeDemo{
	public static void main(String[] args){
		// 1.数值类型  八个基本数据类型
		byte b1 = 100;
		short s1 = 300;
		int i1 = 999;
		long l = 1234567890l;
		// 自动类型转换
		short s2 = b1; // byte --> short
		int i2 = s1 ; // short --> int 
		long l2 = i1; // int --> long 
		// 2.浮点型
		float f1 = 1234.567f;
		double d1 = 1234.567d;
		double d2 = f1;
		// 3.字符型
		char c1 = 'a';
		// 4.boolean
		boolean b2 = true;
		boolean b3 = false;
	}
}
5.3.2 强制类型转换

​ 我们将取值访问比较大的变量赋值给取值范围比较小的变量,那么此时会出现数据的丢失,所以此时我们需要强制类型转换。

代码语言:javascript
复制
public class DataTypeDemo{
	public static void main(String[] args){
		// 1.数值类型  八个基本数据类型
		byte b1 = 100;
		short s1 = 300;
		// 强制类型转换
		byte bb2 = s1; // short --> byte 
		System.out.println("b2 = " + bb2);
	}
}

编译的时候会出现如下的错误

此时为了避免这个错误,我们需要强制类型转换

代码语言:javascript
复制
目标类型  变量名 = (目标类型) 被转换的类型;
代码语言:javascript
复制
public class DataTypeDemo{
	public static void main(String[] args){
		// 1.数值类型  八个基本数据类型
		byte b1 = 100;
		short s1 = 300;
		// 强制类型转换
		byte bb2 = (byte)s1; // short --> byte 
		System.out.println("b2 = " + bb2);
	}
}

​ 做数据类型的强制转换的时候会有数据溢出数据丢失的可能.所以在做数据的强制类型转换的时候一定要谨慎!

5.3.3 类型转换的特例

​ 在 byte、short、char在转换的时候系统会帮助我们做一些处理,我们在赋值给byte,short,char时,如果赋予的值在对于类型的范围之内,系统会帮助我们自动完成转换,次场景下我们不需要强制内容转换。

代码语言:javascript
复制
// 特例
byte by2 = 100;
//byte by3 = 129;
//short short1 = 32768;
char c1 = 65536;
System.out.println(c1);
5.3.4 byte/short和char转换,都需要强制类型转换

byte类型和char类型转换及short类型和char类型相互转换都是需要强制类型转换的

代码语言:javascript
复制
// short和byte类型 同 char类型转换的时候都需要强制类型转换
byte by4 = 120;
char c2 = (char)by4;
System.out.println(c2);
char c3 = 'd';
byte by5 =(byte) c3;
System.out.println(by5);

short s2 = 666;
char c4 = (char)s2;
System.out.println(c4);
5.3.5 表达式类型提升

​ 当表达式运算符两边的类型不一致的时候,结果的类型会自动向高类型转换

代码语言:javascript
复制
// 表达式类型的提升
double d = 2.67;
int i3 = 50;
int i4 = d + i3; // double 和 int 会提升到 double
System.out.println(i4);

解决方式

代码语言:javascript
复制
int i4 = (int)d + i3; // double 和 int 会提升到 double
int i4 =(int)(d + i3);
5.3.6 byte,short,char之间参与运算

​ 当byte,short,char之间参与运算的时候,底层都会转换为int类型来计算。

代码语言:javascript
复制
char c5 = 'a';
short s3 = (short)(c5 + 1); // c5 + 1 得到的结果的类型是int
System.out.println(s3);

char c6 = 'A';
byte b6 = 1;
short s4 =  (short)(c6 + b6);
System.out.println(s4);
5.3.7 布尔型不能参与运算和转换的

​ 在Java中boolean是不能参与运算和转换的。

代码语言:javascript
复制
boolean bool1 = false;
System.out.println(bool1 + 1);
short s5 = bool1;
5.3.8 字符串运算的时候拼接

​ 当字符串类型的数据和其他数据做加法运算的时候都是之间拼接的

代码语言:javascript
复制
String ss = "HelloWorld";
System.out.println(ss + 2.5);
// 20101010
System.out.println(10 + 10 + "10" + 10 + 10);
5.3.9 变量和常量计算的问题

​ 如果表达式是变量组成的,那么我们说讲的特例是不生效的,特例只针对常量

代码语言:javascript
复制
byte b7 = 20 + 30;
System.out.println(b7);

byte b8 = 30;
short s6 = 50;
byte b10 = (byte)(b8 + s6);
System.out.println(b10);
byte b9 = 10;
byte b11  = (byte)(b8 + b9);
System.out.println(b11);

6.运算符

6.1 算术运算符

+,-,*, / 、% 、++ 、 –

6.1.1 +号
  1. 正数
  2. 加号
  3. 连接符号
代码语言:javascript
复制
System.out.println(+20); // 表示 正数
System.out.println(3+4); // 两数相加
System.out.println("Hello" + 666);  // 拼接
6.1.2 - * / %
代码语言:javascript
复制
System.out.println(5-3); // 2
System.out.println(-3);  // -3
System.out.println(5*3); // 15
System.out.println(5/3); // 1
System.out.println(5%3); // 2
System.out.println(2%4); // 2

System.out.println(5/(double)3); // 1.666667
System.out.println((double)5/3); // 1.666667
6.1.3 ++/–

++ – 属于单目运算

++ 表示自增1 – 表示自减1

单独使用

​ 表示自增或者自减,没有任何的区别

代码语言:javascript
复制
public static void main(String[] args)
{
    int a = 10;
    int b = 20;
    // a = 10 b = 20
    System.out.println("a = " + a + " b =  " + b);
    //a ++;
    //b --;
    // a = 11 b = 19
    //System.out.println("a = " + a + " b =  " + b);

    ++ a ;
    -- b ;
    // a = 11 b = 19
    System.out.println("a = " + a + " b =  " + b);
}

参与运算

  1. 如果++放在操作数的左边,就表示先自增再参与运算
  2. 如果++放在操作数的右边,就表示先参与运算然后在自增1或者自减1
代码语言:javascript
复制
// ++ -- 参与运算
int a1 = 3;
int a2 = 4;
int result = (a1++)/3 + (--a2)*2 -(a1--)%6 + (a2++)*3 - (a2--);
System.out.println("a1=" + a1 + "  a2="+a2 + " result="+result);

课堂练习:

  1. int x = 3; int res = (x++)%(++x) 请推断res的值,及x此时的值
  2. int n = 5; n=++n + ++n 求n的值
  3. int n = 3; n= ++n + n ++;求n的值
6.2 赋值运算符

普通的 = 扩展的 += -+ *= /= %=

代码语言:javascript
复制
public static void main(String[] args)
{
    // 赋值运算符 这个不是==赋值语句
    int a = 10 ; // 表示将常量10赋值给变量a地址所对应的内存区域中

    a += 3; //等价于a = a + 3
    System.out.println(a);

    a -= 3; // 等价于 a = a - 3;
    System.out.println(a);	
}

面试题1: short s1 = 1 ; ? s1 = s1 + 1; 有什么错?

​ short s1 = 1; s1 += 1; 又有什么错?

代码语言:javascript
复制
short s1 = 1;
s1 = s1 + 1; // 报错 需要强制类型转换
s1 += 1; // 不会 += 会帮助我们自动完成强制类型转换

面试题2:如何交换两个数?

代码语言:javascript
复制
int x = 10;
int y = 20; // 互换x和y的值

int c = x;
x = y;
y = c;

解决方案:声明一个中级变量即可

6.3 关系运算符

> < >= <= != ==

关系运算符得到的结果都是boolean类型的数据(true和false)

代码语言:javascript
复制
public static void main(String[] args)
{
    int a = 10;
    int b = 20;

    System.out.println(a > b) ; // false
    System.out.println(a < b) ; // true
    System.out.println(a >= b) ; // false
    System.out.println(a <= b) ; // true
    System.out.println(a != b) ; // true
    System.out.println(a == b) ; // false

}
6.4 逻辑运算符

​ 连接多个boolean类型的表达式

boolean类型的表达式1 boolean类型的表达式2 boolean类型的表达式3 boolean类型的表达式4

6.4.1 位逻辑运算符

& 按位与 | 按位或 ^ 异或

代码语言:javascript
复制
public static void main(String[] args)
{
    int a = 10;
    int b = 20;
    // 按位 & 都为true 结果 true
    System.out.println((a > b ) & (a < b)) ; // false &  true = false
    System.out.println((a < b ) & (a > b)) ; // true & false = false
    System.out.println((a < b ) & (a < b)) ; // true & true = true
    System.out.println((a > b ) & (a > b)) ; // false & false = false
    System.out.println("----------------------------");
    // 按位 | 有true 就为true
    System.out.println((a > b ) | (a < b)) ; // false |  true = true
    System.out.println((a < b ) | (a > b)) ; // true | false = true
    System.out.println((a < b ) | (a < b)) ; // true | true = true
    System.out.println((a > b ) | (a > b)) ; // false | false = false
    System.out.println("----------------------------");
    // 按位 异或 相同为false 不同为true
    System.out.println((a > b ) ^ (a < b)) ; // false ^  true = true
    System.out.println((a < b ) ^ (a > b)) ; // true ^ false = true
    System.out.println((a < b ) ^ (a < b)) ; // true ^ true = false
    System.out.println((a > b ) ^ (a > b)) ; // false ^ false = false

}

按位符号也会运用在位运算,位运算操作要比普通运算的效率要高很多

代码语言:javascript
复制
&:有0取0,否则取1
1001 & 0110 = 0
    1 0 0 1
 &  0 1 1 0
 ----------
    0 0 0 0  

|:有1取1,否则取0
1001 | 0110 = 15
    1 0 0 1
 |  0 1 1 0
 ----------
    1 1 1 1 

^:相同为0 不同为1    
1001 ^ 0110 = 15
    1 0 0 1
 ^  0 1 1 0
 ----------
    1 1 1 1 
6.4.2 短路逻辑运算符

&& 短路与 || 短路或者 ! 非

& 表示按位与,无论什么情况都会同时计算运算符两边的表达式

&& 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果

同时注意:在实际使用中我们很少使用按位与,更多的是使用短路与

!:取反

​ 当!的个数是奇数个的时候,结果相反

​ 当!的个数是偶数的时候,结果不变

面试题:& 与 && 的区别

  1. & 表示按位与,无论什么情况都会同时计算运算符两边的表达式
  2. && 表示短路与,如果前面的表达式为false,那么无论后面的表达式结果如何,都不会去计算后面表达式的值。因为后面表达式的值不会影响结果
  3. && 开发中使用,&基本不使用
  4. &常用与位运算操作,效率高
6.5 位运算符

位运算符:用来计算二进制的运算符

& | ^ ~ << >> >>> 补码

6.6.条件运算符

条件运算符又称为三目运算

代码语言:javascript
复制
格式: X ? Y : Z ;
X 表达式必须是boolean类型的表达式
计算流程:
     1. 首先计算X的值
     2. 如果X为true,那么整个表达式的结果就是Y的值
     3. 如果X为false,那么整个表达式的结果就是Z的值

7. 表达式

表达式的定义:符合一定的语法规则的运算符操作数的序列

运算符:算数运算符,赋值运算符,关系运算符,逻辑运算符,位运算符(了解), 三目运算符

操作数:变量或者常量

代码语言:javascript
复制
a + b 
a * 64 - 3
x ? y : z
(x > y) && (100 > z)

表达式的值:整个表达式的结果

表达式的类型:整个表达式的结果的类型

表达式的优先级:

​ i < 30 && i%10 !=0

优先级不用去背!!!

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、–、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

运算符的优先级:

  1. 有括号先计算括号里面的
  2. 单目运算 > 双目运算 > 三目运算
  3. 算数运算符 > 关系运算 > 逻辑运算 > 条件运算 > 赋值运算
  4. 如果优先级相同,从左至右即可
  5. +、- > ++ – !

( ) 可以显著的提高程序的可读性

为了便于查询,以下列出ASCII码表:第128~255号为扩展字符(不常用

ASCII码

键盘

ASCII 码

键盘

ASCII 码

键盘

ASCII 码

键盘

27

ESC

32

SPACE

33

!

34

"

35

#

36

$

37

%

38

&

39

40

(

41

)

42

*

43

+

44

45

-

46

.

47

/

48

0

49

1

50

2

51

3

52

4

53

5

54

6

55

7

56

8

57

9

58

:

59

;

60

<

61

=

62

>

63

?

64

@

65

A

66

B

67

C

68

D

69

E

70

F

71

G

72

H

73

I

74

J

75

K

76

L

77

M

78

N

79

O

80

P

81

Q

82

R

83

S

84

T

85

U

86

V

87

W

88

X

89

Y

90

Z

91

[

92

\

93

]

94

^

95

_

96

`

97

a

98

b

99

c

100

d

101

e

102

f

103

g

104

h

105

i

106

j

107

k

108

l

109

m

110

n

111

o

112

p

113

q

114

r

115

s

116

t

117

u

118

v

119

w

120

x

121

y

122

z

123

{

124

|

125

}

126

~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、Java基础语法
    • 1. 关键字
      • 2. 标识符
        • 2.1 标识符的命名规则
        • 2.2 标识符的命名规范
        • 2.3 开发中标准的规范
      • 3. 注释
        • 4. 常量和变量
          • 4.1 常量
          • 4.2.变量
        • 5.基本数据类型和转换
          • 5.1 计算机单位
          • 5.2 数据类型
          • 5.3 数据类型转换
          • 5.3.7 布尔型不能参与运算和转换的
        • 6.运算符
          • 6.1 算术运算符
          • 6.2 赋值运算符
          • 6.3 关系运算符
          • 6.4 逻辑运算符
          • 6.5 位运算符
          • 6.6.条件运算符
        • 7. 表达式
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档