Free Talk

最近在JavaGuide博客里面兜兜转转了几天,一边等华为的实训消息,一边随便看点Java后端开发的知识。但是这一周总感觉看了就忘,而且光看也很容易走神发呆,要不然就是去打王者啥的。决定还要按照直接写的Java后端学习路线一点点走下去,一篇篇写博客敦促自己,上个月的时候写了一些JVM相关的文章,现在把之前鸽的Java语言基础先补上。

这边Java基础语言主要参照菜鸟教程和JavaGuide完成的,计划在今明两天完成Java语言基础系列博客。

基础知识

四要素

任何一个Java程序都可以认为是一系列对象的集合,而对象之间通过彼此调用方法来协调工作。 - 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 - 类:类是一个模板,它描述一类对象的行为和状态 - 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 - 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

基础语法大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。

类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。

方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 我自己方法名这块之前好像总是大写,记下了

源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。

主方法入口:所有的 Java 程序由 public static void main(String[] args)*方法开始执行。 {% note success no-icon %} 在Java小程序中,applet小程序没有main()方法,是调用init()或者run()方法来启动。 {% endnote %}

Java标识符类名、变量名以及方法名都被称为标识符。

所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始

首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合

关键字不能用作标识符

标识符是大小写敏感的

合法标识符举例:age、$salary、_value、__1_value

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

进阶知识

Java修饰符

Java可以使用修饰符来修饰类中方法和属性。 + 访问控制修饰符 :default, public , protected, private

+ 非访问控制修饰符 : final, abstract, static, synchronized

Final修饰符

Final修饰符可以用来修饰类、方法和变量。 1. 类:final修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为final方法; 2. 方法:final修饰的方法不能被重写; 3. 变量:final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。

{% note info no-icon %} 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。 {% endnote %}

Abstract修饰符抽象类:

抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。

一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象类可以包含抽象方法和非抽象方法。

抽象方法:

抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。抽象方法不能被声明成final和strict。

任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法。

Static修饰符修饰成员变量和成员方法: 被 static 修饰的成员方法属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。 被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内存区域的方法区。 调用格式:类名.静态变量名 类名.静态方法名()

静态代码块: 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次.

静态内部类(static修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非static成员变量和方法。

静态导包(用来导入类中的静态资源,1.5之后的新特性): 格式为:import static这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。

Synchronized修饰符

Synchronized关键字声明的方法同一时间只能被一个线程访问。Synchronized修饰符可以应用于四个访问修饰符。

Java变量类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

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

public class Variable{

static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){

int i =0; // 局部变量 }

}

java方法四要素_Java基础语法相关推荐

  1. Java是有法_Java基础语法

    Java的基础语法包含三大类:标识符.修饰符.关键字. 一.标识符. 定义:标识符是以数字.字母.下划.$符号(美元符)所组成的用来标志类名.对象名.方法名.类型名.数组名.包名的有效字符序列.(简单 ...

  2. java方法的传递方式_JAVA基础--方法传参

    JAVA基础--方法传参 为啥拿这个当话题? 在初学者阶段,许多童鞋都对方法传参比较迷茫,知其然不知其所以然. 一.先说说参数传递的几个术语: 值调用(call by vale):表示方法接收的是调用 ...

  3. java 数组下标 变量_Java基础语法:数组

    一.简介 描述: 数组是相同类型数据的有序集合. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 基本特点: 数组的长度是确定的.数组一旦被创建,它的大小就是不可以改变的. ...

  4. java default修饰符_Java基础语法二

    Java循环结构 for循环 /* for(初始化;布尔表达式;更新) {执行代码 } */ for(int i=0; i < 5; i++) {System.out.println(i); } ...

  5. java 方法 参数 引用_Java 基础

    本质上,只有值传递这一种传递方式,所谓的引用传递是值传递的一种.即:1 2 3 4 5 6// 将2这个值复制一份传递给m int a = 2; m(a); // 将引用o复制一份并将其值传递给m m ...

  6. java大括号定义数组_Java基础语法_数组

    数组的概念 数组的概念:是一种容器,可以同时存放多个数据值 数组的特点: 1.数组是一种引用数据类型 2.数组当中的多个数据,类型必须统一 3.数组的长幅在程序运行期间不可改变 数组的定义格式 数组的 ...

  7. Java方法详解(基础)

    Java方法详解(基础) 什么是方法? System.out.println():调用系统类标准输出对象方法out. 方法是语句的集合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合. ...

  8. Java入参关键字_Java基础17-成员变量、return关键字和多参方法

    1.成员变量 在类中声明的变量为成员变量 //Dog类 class Dog{ String name;//成员变量 } public class Test1{ public static void m ...

  9. JAVA运算的类型兼容原则_Java基础语法回顾(一)

    Java基础语法 Java规范 image.png Java字节码 java程序是以".java"为扩展名,当我们编写完java程序后,要执行程序需要经过两个阶段:编译和运行. 编 ...

最新文章

  1. Linux之父为过去的言行道歉,宣布离开社区反思
  2. Nginx全局块的其他配置指令
  3. 前端学习(2326):angular之用户输入数据
  4. 13篇顶会!25岁成985高校博导,入职半年发ICML,网友:万点暴击
  5. 回飞锅有哪些功能_回飞锅的精髓,只由原创者荷兰BK掌控
  6. c语言基础符号,C语言符号大全。陆续更新基础知识给新人提供。(申精)
  7. 第 72 章 FAQ
  8. 计算机的任务管理器作用,电脑技术:如何妙用任务管理器
  9. 图标字体化浅谈[转]
  10. [算法]圆圈中最后剩下的数
  11. SpringBoot自动解压Gzip请求
  12. 曲面上的测地线 MATLAB,§6曲面上的测地线.PDF
  13. web之qq邮箱登录界面
  14. linux学习之使用piranha配置高可用集群
  15. 史上最强的超级爆笑锦集
  16. 解析LDO的五大作用,这里有你意想不到的答案
  17. 全国英语计算机等级考试报名费,通知 | 全国大学生英语竞赛计算机等级考试报名...
  18. Vue后台管理系统项目——实现登录功能
  19. 学linux作用,linux有必要学吗?学linux有什么作用,学linux能干什么
  20. vb中自动调整控件的大小

热门文章

  1. 类似点亮星星打分功能
  2. 【游戏开发】关于Direct X(六)绘制蝙蝠着色器
  3. flink消费kafka时topic partitions 和并行度间的分配源码详解
  4. 注册aws账号领取EC2免费套餐
  5. 洛阳市建筑物矢量数据(Shp格式+带高度)
  6. inherited 用法
  7. python之json序列化与反序列化
  8. 持续改进中-基金持仓前十股票分析工具升级V0.04版
  9. SpringCloud-10-配置控制台彩色打印、自定义banner
  10. python php 全双工,Python网络编程之使用select实现socket全双工异步通信功能