【程序员养成之路】Java基础篇 2-初学Java必知的基础语法

以下内容若有误,欢迎私信我或在下方留言,谢谢^_−


基础语法

1.注释(以IDEA为例)

(1)单行注释

说明:单行注释一般注释少量的代码或者说明内容。

// 这里是单行注释

使用方法:快捷键Ctrl + / 或直接输入 //

(2)多行注释

说明:多行注释一般注释大量的代码或者说明内容

/*这里是多行注释*/

使用方法:快捷键Shift + Ctrl + / 或 输入 /* 后回车

(3)文档注释

说明:文档注释一般用于对类或方法进行功能说明

/**
 * @Author regex
 * 这里是文档注释
 */

使用方法:输入 /** 后回车

2.标识符

Java中所有的组成部分都需要有名字。类名、变量名以及方法名都被称为标识符。

(1)关键字

以下为JDK 8版本的关键字,关键字都是小写

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

部分关键字介绍:

  • static:意思是“静态的”,用来修饰成员变量和成员方法,也可以形成静态代码块。被static修饰的成员变量和成员方法将独立于该类的任何对象,也就是说,它并不依赖类特定的实例,能够被类的所有实例所共享。与类一起加载,只执行一次。
public class Demo {
    // 定义一个static变量,也称为类变量
    static String name = "regex";
    // 定义一个non-static变量,也称为实例变量
    int age = 20;

    public static void main(String[] args) {
        // 可以直接使用类变量
        System.out.println(name);
        // 需要创建一个对象才能使用
        Demo demo = new Demo();
        System.out.println(demo.age);
    }
}
  • final:意思是“最终的”,用于修饰变量、方法和类。若修饰基本类型的变量,则该变量的数值一旦被初始化就不能再更改;若修饰引用类型的变量,则被初始化后就无法再指向另一个对象;若修饰方法,则该方法无法被子类重写;若修饰类,则该类无法被继承。被final修饰的,由于无法被继承,会断子绝孙。
public class DemoFinal {
    final class People{
        public People() {

        }
    }
    // 报错:Cannot inherit from final 'DemoFinal.People'
    // final修饰的不能被继承
    class Man extends People{

    }
    static final double PI = 3.14;
    public static void main(String[] args) {
        // 报错:Cannot assign a value to final variable 'PI'
        // final修饰的不能被修改
        PI = 3.1415;
    }
}
  • try、catch、finally:这三个关键字一般情况都是成套出现,常用于异常处理。try用来监控区域,catch用来捕获异常,finally用来进行善后处理,例如在IO流中用于释放资源。需要注意的是,被finally圈起来的语句一定会执行,除非JVM退出。
	try {                       // 监控区域
	                            // 可能发送异常的语句
	} catch (Exception e) {     // 捕获异常,Exception可以是其它类型的异常
	    e.printStackTrace();    // 向控制台打印异常信息,或其他异常处理的代码
	} finally {                 // 善后处理,无论是否发生异常,都会执行
	                            // IO流中可以用于释放资源
	}
  • super、this:super和this的用法相似,只不过this代表的是本类对象的引用,而super代表父类存储空间的标识,可以理解为父类对象的引用。

在这里插入图片描述

public class Person {
    // 父类属性
    public int age = 15;
}
public class Student extends Person {
    // 子类属性(成员变量)
    public int age = 18;
    // 子类方法(成员方法)
    public void print() {
        // 局部变量
        int age = 20;
        System.out.println(age);
        // 访问本类成员变量使用this
        System.out.println(this.age);
        // 访问父类成员变量使用super
        System.out.println(super.age);
    }
}
/*测试类*/
public class Test {
    public static void main(String[] args) {
        // 创建对象,调用方法
        Student student = new Student();
        student.print();
    }
}
/*
运行结果:
    20
    18
    15
 */

(2)定义标识符的规范要求

  • 由字母(A-Z、a-z)、美元符($)、下划线(_)或者数字(0-9)的任何字符组合,但不能以数字开头。
  • 严格区分大小写。
  • 不能使用关键字。
  • 包名所有字母一律小写。如com.regex.test
  • 类名和接口名每个单词的首字母都要大写。如ArrayList、Iterator
  • 常量名所有字母都大写,单词之间用下划线连接。如DAY_OF_MONTH
  • 变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写(驼峰命名)。如lineNumber、getLineNumber
  • 尽可能使用有意义的英文单词或者组合定义标识符。如username表示用户名

3.数据类型

Java数据类型

注意:

数据类型默认值
byte、short、int、long0
float、double0.0
char‘\u0000’
booleanfalse
引用数据类型null

使用long或float需在对应数字后面加上相应类型的首字母大写,如

long num_l = 20L;
float num_f = 20.13F;

4.变量作用域

  • 类变量
  • 实例变量
  • 局部变量
public class DemoVariable {
    // 类变量,使用static修饰符
    static int year = 2021;
    // 实例变量,从属于对象,若不自行初始化,则为默认值(0/0.0/false/null)
    String s = "Hello World!";

    public static void main(String[] args) {
        // 局部变量,必须声明和初始化值才能使用
        int a = 2;
        int b = 0;
        double c;
        System.out.println(a + b);
        // 报错:Variable 'c' might not have been initialized
        System.out.println(c);
    }
}

拓展1:强类型语言和弱类型语言

(1)强类型语言

强类型语言是一种强制类型定义的语言,要求变量的使用必须严格符合定义,一旦该变量被指定类型,如果不进行强制类型转换,则该变量不会改变原来的数据类型。强类型语言有Java、.net、Python等。

// num被定义为int类型
int num = 20;
/*报错:
	Required type:int
	Provided:double
*/
num = 20.20;

(2)弱类型语言

弱类型语言与强类型语言相反,数据类型可以被忽略的语言。当变量被指定类型后,该变量可以根据环境需要改变自身的数据类型,因此,一个变量可以赋不同数据类型的值。弱类型语言有PHP、JavaScript等。

// a被赋予整数型的值
var a = 20;
// a被赋予浮点型的值
a = 20.2;	
// 输出结果为“20.2”
window.alert(a)

(3)两者区别

强类型语言和弱类型语言,可通过“定义的变量被赋值后能否被赋予其他类型的值”进行判断。弱类型语言有时显得很方便、速度快,但有时却又极易出错。相比于强类型语言,强类型语言的严谨性则能避免数据类型上一些不必要的错误。

拓展2:位、字节、字符

(1)位(bit)

位是计算机内部数据储存的最小单位。在计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位(bit)。

(2)字节(Byte)

字节是计算机中数据处理的基本单位,一般用大写B表示。

(3)字符

字符是指计算机中使用的字母、数字、字和符号。

(4)单位转换:

1B (Byte,字节)=8b(bit,比特)
1KB(Kilobyte,千字节)= 1024B
1MB(Megabyte,兆字节)= 1024KB
1GB(Gigabyte,吉字节,千兆字节)= 1024MB
1TB(Trillionbyte,万亿字节,太字节)= 1024GB
1PB(Petabyte,千万亿字节,拍字节)= 1024TB
1EB(Exabyte,百亿亿字节,艾字节)= 1024PB
1ZB(Zettabyte,十万亿亿字节,泽字节)= 1024EB
1YB(Yottabyte,一亿亿亿字节,尧字节)= 1024ZB
1BB(Brontobyte,千亿亿亿字节)= 1024YB

(5)电脑32位和64位的区别是什么?

①支持的内存不同(寻址能力不同)

32位系统最多支持4G内存,而64位系统可以支持4G、8G、16G、32G、64G、128G等。

②支持的处理器不同

64位系统支持64位和32位的CPU,而32位系统无法完全支持64位的CPU。

③支持的软件不同

64位系统支持32位和64位软件,32位系统仅支持32位软件。

④数据处理能力不同

32位计算机的CPU一次最多只能处理32位数据,而64位一次可以处理64位数据,理论上64位系统会比32位系统快1倍。

⑤系统体积不同

64位系统相比32位系统体积会大得多。

⑥设计初衷不同

32位系统仅适用于一般用户,而64位系统能够满足机械设计和分析、三维动画、视频编辑和创作、科学计算等领域的需求。

拓展3:整数进制

(1)二进制:0b开头
(2)八进制:0开头
(3)十六进制:0x开头

拓展4:Java运算自动提升类型

public class Demo01 {
    public static void main(String[] args) {
        short a = 10;
        short b = 2;
         // 报错:Inconvertible types; cannot cast 'int' to 'java.lang.String'
         // 由报错可知,a + b被自动提升为int类型
        System.out.println((String)(a + b));
        // 进行强转类型
        System.out.println((short)(a + b));
    }
}

原因:在Java运算中,当数据类型的范围小于int的范围(如byte,char,short)时,数据类型会自动提升为int类型。比如,两个short类型的数据在进行运算时,运算结果就会变成int类型;如果需要结果是short类型,则需要强转成short类型,这是java编译器内部对其进行处理的原因。


【程序员养成之路】Java基础篇 1-聊聊Java那些事

【程序员养成之路】Java基础篇 3-反手就能写个冒泡排序的数组

【程序员养成之路】Java基础篇 4-从面向对象里找对象

【程序员养成之路】Java基础篇 5-从异常机制认识常见bug

【程序员养成之路】Java基础篇 6-啥都能“装”的集合

【程序员养成之路】Java基础篇 7-流进流出的IO流(一)

【程序员养成之路】Java基础篇 8-流进流出的IO流(二)

【程序员养成之路】Java基础篇 9-认识一下类加载器与反射


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正则表达式1951

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

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

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

打赏作者

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

抵扣说明:

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

余额充值