Java之基础语法

Java之基础语法

变量作用域

作用域决定了在其内的变量名的可见性和生命周期。作用域由大括号的位置决定。

	{
        int a = 0;
        {
            int b = 1;
            //b只在离它最近的开始括号和下面这个结束括号之前生效
        }
        //a在第一个开始括号和下面这个结束括号之前都生效
        //b在这里不生效
    }
  • 在作用域里定义的变量只可用于作用域结束之前。
  • 由于Java是一种自由格式的语言,所以空格、制表符、换行都不会影响程序的执行结果。

注释

	//单行注释
	/*
	 * 多行注释
	 */

强制类型转换

  • 定义:将一个类型强制转换成另一个类型的过程。
  • 要转换的原因:要暂时忽略对象的实际类型之后使用对象的全部功能。
  • 注:
    • ①只能在继承层次内进行强制类型转换;
    • ②转换之前,可以使用instanceof关键字检查是否可以转换。
      • boolean isFromA = a instanceof A;

package

  • 用来定义类所属的包,确保类名的唯一性。
  • 完全限定名:
    • package com.java.Demo.People
      • com.java:域名。
      • Demo:项目名。
      • People:类名。

import

import用于指示编译器导入一个包中的类、变量或方法。

  • 可以在import关键字后跟static来静态导入静态方法、字段。
    • 缺点:静态导入会降低程序的可读性。
  • 可以使用通配符*来导入某个包下的多个类。
import java.util.*;
//静态导入
import static java.lang.System.out;

方法

  • 方法有返回类型、方法名和参数列表。
    • 方法有两类参数:
      • ①隐式参数:方法名前面的类的对象,也就是this,可以在方法中使用;
      • ②显示参数:参数列表中的参数。
  • 一些叫法:在c等语言中,习惯把方法叫做函数,在Java中,更习惯叫它方法。
  • 方法名和参数列表合起来被称为方法签名,用来唯一地标识出一个方法。
    • 注:方法的签名不包含方法的返回值
  • 可变参数列表:用于接收多个参数。
    • 在可变参数列表中可以使用任何类型的参数,包括基本类型。
    •  void test(Object... args) {}
      
  • return关键字:首先它表示已执行完成离开方法,如果需要结果就把结果放在后面。
    • 返回类型是void,那它就只是用来退出方法。同时会在方法结尾处有一个隐式的return。
    • return不一定非要在方法末尾,你可以将它放在任何地方,但如果方法返回类型不是void,编译器会强制要求返回一个类型为返回类型的值。
  • 实参和形参:
    • 形参:是指在定义方法时方法参数列表的参数。
      •  public void test(int a) {
        
         }
        
    • 实参:在调用有参函数时,方法括号中实际的参数。
      •  test(1);
        
  • 方法参数:
    • 按值调用:方法接收的是调用者提供的值。
    • 按引用调用:方法接收的是调用者提供的变量的地址。
    • 方法可以修改按引用传递的变量的值,而不能修改按值传递的变量的值。
    • Java是按值调用。
  • 方法的作用:
    • 方法不能修改基本数据类型的参数。
    • 方法可以修改对象参数的引用的对象的状态。
    • 方法不能修改对象参数的引用。
  • 方法内联(inline):
    • 是指编译器将函数或方法的代码插入到调用它的地方,以取代函数的调用过程。
    • Java的内联是由编译器自动完成的。
    • 内联可以优化程序的执行速度,因为减少了函数调用的开销和跳转的开销。
    • 注:被覆盖的方法不会被内联,因为内联需要在编译时确定调用的确切函数,而覆盖方法的调用只能在运行时才能确定。
    • Java中哪些代码会进行内联取决于编译器的判断和优化策略。下面是一些可能发生内联的示例代码:
      • ①直接return变量值的方法:getValue()方法直接返回了一个常量值,没有其他操作。在编译时,编译器可以将该方法的调用直接替换为常量值42,从而避免了函数调用的开销,提高了程序的执行速度。
        •  public int getValue() {
           	return 42;
           }
          
      • ②简单的set和get方法:
        •  public class Person {
           	private String name;
          
           	public void setName(String name) {
           		this.name = name;
           	}
          
           	public String getName() {
           		return name;
           	}
           }
          
        • Person类包含了一个私有变量name和两个对其进行操作的方法,分别是setName()和getName()。由于这两个方法都非常简单,并不做其他的事情,因此编译器可能会将它们的调用内联到对应的地方。例如:
          •  Person person = new Person();
             person.setName("Alice");
             String name = person.getName();
            
        • 在编译时,可能会将这两行代码优化为:
          •  Person person = new Person();
             person.name = "Alice";
             String name = person.name;
            
      • ③可内联的方法被多次调用:
        •  public int add(int a, int b) {
           	return a + b;
           }
          
           public int multiply(int a, int b) {
           	return a * b;
           }
          
           public int calculate(int x, int y) {
           	int result1 = add(x, y);
           	int result2 = multiply(x, y);
           	return add(result1, result2);
           }
          
        • 以上代码中,calculate()方法调用了add()和multiply()两个方法,并对它们的返回值进行了加法运算。由于add()和multiply()都是简单的数学计算操作,并不包含复杂的控制流程,因此编译器可能会将它们内联到calculate()方法中,从而避免了函数调用的开销。因此,可能会在编译时将calculate()方法优化为:
        •  public int calculate(int x, int y) {
           	int result1 = x + y;
           	int result2 = x * y;
           	return result1 + result2;
           }
          
        • 这样做可以提高程序的执行速度。

你可能感兴趣的:(Java,java,jvm,开发语言)