Java语法--Java基础

160 阅读7分钟

Java语言基础

标识符|注释符

标识符

Java语言中,对变量、方法和类等命名时使用的字符序列称为标识符。

  • Java的命名规则如下

    • 标识符由字母、下划线“_”、美元符号“$”或数字组成
    • 标识符应以字母、下划线、美元符号开头(不能用数字开头)
    • Java标识符区分大小写,长度不限
    • 标识符不能时Java的关键字

注意:Java采用的是Unicode字符集。

规范化命名:

①类和接口名:采用大小写混合形式,且每个英文单词首字母大写,不要空格。如:HelloWorld

②方法名:首个单词首字母小写,其余单词首字母大写,称为驼峰命名法。如:myName

③常量名:全大写,且单词之间用下划线分隔,对象常量名可大小写混合。如:SIZE_NAME

注释符

  • 单行注释://

    • 仅一行被注释
  • 多行注释:/* ...... */

    • 注释若干行,又称为块注释
  • 文档注释:/** ...... */

    • 注释若干行,并写入javadoc文档

数据类型

定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。

分类

  • 基本数据类型

    • 数值型

      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)

    • 布尔型(boolean)

  • 引用数据类型

    • 类(class)
    • 接口(interface)
    • 数组([])

整型

整型类型整形长度
byte8位
short16位
int32位
long64位
整型类型最大值最小值
intInteger.MAX_VALUEInteger.MIN_VALUE
longLong.MAX_VALUELong.MIN_VALUE

浮点型

浮点类型字节长度
float32位
double64位

注:小数默认为double类型。也可以在数值后加D或d、F或f作为double、float类型

BUG:

double a = 0.1 + 0.2 ;
System.out.println(a);//0.30...04

字符类型

使用char类型表示单个字符,占16位

char类型的常量必须在一对单引号内

布尔类型

boolean,占一个字节

字符串类型

Java概述→字符串

基本数据类型

八大基本数据类型:

byte  short  int  long  double  float  boolean  char
  • 这八种数据变量中直接存储值
  • 其中byte占一个字节
  • short和char占两个字节
  • int,float占四个字节
  • double和long占8个字节
  • boolean只有true和false

注意:八大基本数据类型对应着各自的封装类型的包装类,提供了更多的方法,且不进行初始化时值默认为空(基本数据类型必须初始化),并且属于引用类型。

引用数据类型

引用类型主要是一些类、接口、数组 引用类型变量中存储的是地址,对应的地址存储数据

包装类

概述

Java 为每种基本数据类型分别设计了对应的类,称之为包装类(Wrapper Classes),也有地方称为外覆类或数据类型类。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
charCharacter
doubleDouble
floatFloat
booleanBoolean

装箱和拆箱

装箱:基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象。

拆箱:包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int。

手动拆箱装箱:手动实例化一个包装类称为手动拆箱装箱。Java 1.5 版本之前必须手动拆箱装箱。

自动拆箱装箱:在进行基本数据类型和对应的包装类转换时,系统将自动进行装箱及拆箱操作。

实例:

public class Demo {
    public static void main(String[] args) {
        int m = 500;
        Integer obj = m;  // 自动装箱
        int n = obj;  // 自动拆箱
        System.out.println("n = " + n);
      
        Integer obj1 = 500;
        System.out.println("obj等价于obj1返回结果为" + obj.equals(obj1));
    }
}
​
//运行结果
n = 500
obj等价于obj1返回结果为true

应用

1) 实现 int 和 Integer 的相互转换

可以通过 Integer 类的构造方法将 int 装箱,通过 Integer 类的 intValue 方法将 Integer 拆箱。例如:

public class Demo {
    public static void main(String[] args) {
        int m = 500;
        Integer obj = new Integer(m);  // 手动装箱
        int n = obj.intValue();  // 手动拆箱
        System.out.println("n = " + n);
       
        Integer obj1 = new Integer(500);
        System.out.println("obj等价于obj1的返回结果为" + obj.equals(obj1));
    }
}
​
//运行结果
n = 500
obj等价于obj1的返回结果为true

2) 将字符串转换为数值类型

在 Integer 和 Float 类中分别提供了以下两种方法:

  • Integer 类(String 转 int 型)

    • int parseInt(String s);
    • s 为要转换的字符串。
  • Float 类(String 转 float 型)

    • float parseFloat(String s)
  • 注意:使用以上两种方法时,字符串中的数据必须由数字组成,否则转换时会出现程序错误。

字符串转换为数值类型的例子:

public class Demo {
    public static void main(String[] args) {
        String str1 = "30";
        String str2 = "30.3";
        // 将字符串变为int型
        int x = Integer.parseInt(str1);
        // 将字符串变为float型
        float f = Float.parseFloat(str2);
        System.out.println("x = " + x + ";f = " + f);
    }
}
​
//运行结果:
x = 30;f = 30.3

3) 将整数转换为字符串

Integer 类有一个静态的 toString() 方法,可以将整数转换为字符串。

例如:

public class Demo {
    public static void main(String[] args) {
        int m = 500;
        String s = Integer.toString(m);
        System.out.println("s = " + s);
    }
}
​
//运行结果
s = 500

数据类型转换

数据类型的转换方式分为“自动类型转换”和“强制类型转换”。

转换的一般原则是低精度数据类型转换为高精度数据类型参与运算。

自动类型转换

bye→short→int→long→float→double

Java会在下列的条件皆成立时,自动转换: ①转换前的数据类型与转换后的类型兼容; ②转换后的数据类型的表示范围比转换前的类型大。

类型范围小的变量,可以直接赋值给类型大的变量

如:

byte a = 12;
int b = a;

强制类型转换

语法:

(要转换的数据类型) 变量名称;
​
如:
int a = 3;
byte b = (byte) i;

注:转换过程中可能会丢失数据的精度。

运算符

算术运算符

  • 一元运算符
运算符用法描述
++aa取正值
--aa取负值
++++a先加1,再使用
++a++先使用,再加1
----a先减1,再使用
--a--先使用,再减1
  • 二元运算符
运算符表达式描述
+a + b两数相加
-a - b两数相减
*a * b两数相乘
/a / b两数相除
%a % b取余

注意:

+:可作连接运算符。能算就算,不能算就相连

char类型在运算时会先转换为数值

关系运算符

有>、<、>= 大于或者等于、<= 小于或者等于、!=

操作结果是一个布尔类型

逻辑运算符

运算符表达式描述
&&(短路与)a && b全真则真,若左为false则右不执行
11(短路或)a 11 b一真则真,若左为true则右不执行
&(逻辑与)a & b全真则真,右一直执行
1(逻辑或)a 1 b一真则真,右一直执行
^(逻辑异或)a ^ b两面结果相同则为false,不同则为true
!(逻辑非)! a取反

注意:上方的或(1)即是符号||

其他运算符

运算符用法功能
?:(三元运算符)a ? b : c若a为true,则返回b,否则返回c

拓展

输入语句

// 1、在程序首部导入Scanner类
import java.util.Scanner;
​
// 2、在主方法中创建Scanner类的对象
// 创建对象的格式:类名称 对象名 = new 类名称([]); 其中[]为参数。如:
Scanner sr = new Scanner(System.in); // Scanner类;sr为对象名;参数为System.in// 3、利用对象调用不同的方法实现不同数据类型的输出
// ①输出整型数:变量名 = 对象名.nextInt();
// ②输出单精度实型数:变量名 = 对象名.nextFloat();
// ③输出字符型:变量名 = 对象名.next();
mima = sr.nextInt(); // mima为变量名;sr为对象名

Random随机数

// 1、导包,告诉程序取JDK的哪个包找此技术
import java.util.Random;
​
// 2、得到随机数对象
Random r = new Random();
​
// 3、调用随机数的功能获取0-9的数
int number = r.nextInt(10);

注:nextInt(n)功能只能生成 0至n-1 之间的数