java基础语法

本文详细介绍了Java的基础语法,包括常量、变量的使用,如直接量、自定义常量和局部/全局变量。深入探讨了基本数据类型,如整数类型(byte, short, int, long)、浮点类型(float, double)、字符类型(char)和布尔类型(boolean)。同时,讲解了数据类型转换规则,以及算术、关系、逻辑、位运算符的使用。此外,还涵盖了三目运算符和运算符优先级的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java基础语法

1.常量与变量

在程序设计语言中,对于数据的存储通常会以常量或者变量的形式存在:

常量:不可改变的数据

变量:可以改变的数据

1.1.常量

java中常量的表现形式分为两种:

  1. 直接量:未经定义直接使用的数据值

    //直接量(魔法值)
    System.out.println(10);
    System.out.println("不积小流无以成江海,不积跬步无以至千里");
    System.out.println(3.14);
    
  2. 自定义常量

    /**游戏窗体标题*/
    public static final String TITLE = "CXK 打篮球?or 打飞机?";
    /** 窗体宽度*/
    public static final int WIDTH = 450;
    /** 窗体高度*/
    public static final int HEIGHT = 700;
    /** 隐藏窗口*/
    public static final boolean HIDDEN = false;
    /** 显示窗口*/
    public static final boolean SHOW = true;
    

1.2.变量

在程序中用于存储数据的最基本单元称之为变量,在程序中定义变量本质上就是在向内存申请空间(存储空间),变量的声明语法:

数据类型 变量名称 = [<初始值>]

例子:

//声明整数变量
int i = 100;

String j = "helloworld";
//赋值
i = 200;
i = 5;
1.2.1.变量的分类

java中的变量分为两种表现形式:

  1. 局部变量:一般在方法中(或分支语句,循环语句块)定义的变量,作用域只能够存在声明区域
  2. 全局变量:在类结构中直接定义的变量,可以在类的其他方法(非static方法)中任意使用

在这里插入图片描述

2.数据类型

​ 数据类型:自然界中任何的事物都可以使用数据表示,只要是数据就存在类型之分,比如:人的年龄一般是整数,描述一个成年人是否结婚使用是或否表示,表示学生的专业以字符串形式表示等。

​ java是一门强类型语言,即任何的变量在使用之前一定要先经过定义,并且指定其数据类型,另外,在使用期间不能随意更改其数据类型;

java中的数据类型分为两大类:

  1. 基本数据类型(简单类型)
  2. 复合数据类型(引用类型)

2.1.基本数据类型

java中对于一些简单数据,比如一个整数,一个小数,一个true或false值,一个字符等这些数据可以使用基本数据类型进行描述。java中的基本类型数据分为四类八种:

  • 整数类型
    • byte
    • short
    • int
    • long
  • 浮点类型(小数类型)
    • float
    • double
  • 字符类型
    • char
  • 布尔类型
    • boolean
2.1.1.整数类型

Java中的整数使用根据定义的数据大小不同使用不同的类型表示,由小到大分为byte<short<int<long

  • byte:1字节(1字节=8bit)
  • short:2字节
  • int:4字节
  • long:8字节

在这里插入图片描述

//二进制  0 1
//八进制 0 ~ 7
//十进制 0 ~ 9
//十六进制 0 ~ 9 A ~ F
// 0 ~ 255
// 2^7-1~-2^7
byte b = 127;
byte b2 = -128;

short s = 15400;

int i = 10000;

long lon = 12345678901L;

整数类型的使用场景:

  1. 进行文件的相关读写操作时使用到byte类型
  2. 对于较大的整数,例如:时间毫秒数,文件的字节总数的表示可以使用long类型
  3. 其他大部分时间都使用int类型

注意事项:

  • java中默认的整数类型为int
  • 对于long类型数据的表示一定要在数值末尾使用L表示
2.1.2.浮点类型

浮点类型即小数类型,一般用于描述一些小数数据,比如体重(65.5),学分(45.5)等;java中的浮点类型分为两个:

  • float:4字节
  • double:8字节
//对于单精度(float)类型需要在数值末尾使用“f”或"F"
float f = 3.14F;
//
double d = 3.14;

double d1 = 3.141592647;
float d2 = 3.141592647F;

System.out.println(d1);
System.out.println(d2);

在这里插入图片描述

注意事项:

  1. 避免直接使用doublefloat表示与金额等敏感数据,由于计算机对浮点数计算精度的导致数据的差异;对于敏感的浮点数运算一般会直接转换为整数,字符串运算或者使用java.math.BigDecimal进行运算

  2. 浮点数中包含三个特殊的值Infinity-InfinityNaN

System.out.println(10.0/0); //Infinity
System.out.println(-10.0/0); // -Infinity
System.out.println(0.0/0); // NaN(not a number)
2.1.3.字符类型

java中对于单个的字符可以使用字符类型char表示,区别于StringString用于表示字符串,本质是一个字符序列(字符数组)

  • char类型可以用于表示通常意义上的单个字符(一个字母,一个特殊符号,一个中文字符),占据2字节(16位)
char c1 = 'a';
char c2 = 'A';
char c3 = '国';

//ASCII码表
char c4 = 65; //A
//0~65535
char c5 = 60800;
//转义符号
char c6 = '\n';
//unicode码(万国码)
char c7 = '\u0009';

char c8 = '\t';

System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);

System.out.println("hello"+c8+"world");
//请输出一个 "hello" 符号
System.out.println('"'+"helloworld"+'"');
System.out.println("\"helloworld\"");
// 输出的文件地址:D:\\soft\\java\\apache-maven-3.6.1
System.out.println("D:\\\\soft\\\\java\\\\apache-maven-3.6.1");

// GBK  UTF-8  GB2312 GB18030 latin-1 BIG5
// 输出一个学生信息表
/*
            学号  姓名  年龄  学分
            101  张三   18   60
            102  李四   20   34
         */
System.out.println("学号\t姓名\t年龄\t学分");
System.out.println("101\t张三\t18\t60");
System.out.println("102\t李四\t20\t34");

在这里插入图片描述

char类型一般常见于字符转码

2.1.4.布尔类型

java中对于一些特殊的数据例如,描述一个成年是否结婚,描述一个状态(存在,不存在)等只有两种取值的数据时可以使用布尔类型;java中的布尔类型使用boolean,取值只能是truefalseC语言中可以使用0或1表示布尔类型

布尔类型是所有基本数据类型中最小的数据类型,只占1个二进制位。

boolean b = true;
boolean b2 = false;

注意事项:

  • 布尔类型的使用场景一般用于布尔逻辑判断(条件分支语句中)
  • 可以使用一个表达式(运算结果为true和false)作为boolean类型的值

String是否是基本类型数据?

  • String不是基本类型数据,是JDK中定义在java.lang包中的一个java类

  • 所有的基本类型数据都是小写的英文单词(关键字)

2.2.引用数据类型

​ 以上所了解的基本类型数据可以用于表示一些简单数据(单一的值);但是对于复杂的数据(一个学生,一只狗,一个订单,一个员工)无法通过基本数据类型精准表示;因为这些复杂类型包含的信息很多,比如一个学生(学号,姓名,性别,年龄,生日,专业,学习,玩游戏,谈恋爱),因此,java中提供了用于表示复杂数据的数据类型:引用类型,java中的引用类型通常是以类的形式存在。

一个引用类型的存在形式如下:

public class Student{
    
    int sno;
    String sname;
    char sex;
    int age;
    Date birth;
    String major;  
    
    public void study(){
        
    }
    
    public void play(){
        
    }
    
}

Student s = new Student();

2.3.数据类型转换问题(基本类型)

在实际开发中经常会涉及到不同数据类型之间转换问题,java中对于数据类型之间的转换也提供了支持,java中数据类型的转换遵循以下原则:

  • 小转大,直接转(隐式转换)
  • 大转小,续强转(显式转换)

在这里插入图片描述

转换语法格式:

(目标类型)变量名

示例代码:

//1字节(8位)
byte b = 100;

//4字节(32位)
int i = b;
System.out.println(i);

i = 1000;
//强制转换
b = (byte)i;
System.out.println(b);

注意事项;

  1. java中所有基本类型数据除了boolean之外都可以相互转换

3.运算符

在日常的软件项目开发中,多数时候都是在对数据进行操作,而数据的相关操作离不开运算(加减乘除,取余,比较等),因此java中也支持各种运算符:

  1. 分割符
  2. 调用符号
  3. 算术运算符
  4. 关系运算符
  5. 布尔逻辑运算符
  6. 位运算符
  7. 三目运算
  8. 其他运算符
名称符号
分隔符1. 逗号(,)变量之间的分割,数组元素之间分割,参数之间的分割
2. 分号(;)一行语句结束
3. 小括号():方法的声明和调用,类型强转,表达式优先级设置
4.方括号[]:数组的定义
5.花括号{}:语句块的声明
元素调用符号. :方法调用,属性调用

3.1.算术运算符(运算结果为数值)

名称符号
相加+
相减-
相乘*
相除/
取余%
递增/递减++/–

案例代码:

int i = 20;
int j = 3;
System.out.println(i / j);
//取余运算
System.out.println(i % j);

//将一个运算的结果控制在 0-9 之间
System.out.println(i % 10);

//        System.out.println("a=" + (i++)); // i + 1
//        System.out.println("b=" + i);

//请你计算 i++ - --i * j-- + ++j
//20 - 20 * 3 + 3
System.out.println(i++ - --i * j-- + ++j);

注意事项:

  1. 取余运算,取得两个数相除之后的余数
  2. 递增递减等同(+1/-1),但是运算符在运算数之前和之后结果存在差异
  3. 如果运算符在运算数之后,则先使用再运算
  4. 如果运算符在运算数之前,则先运算再使用

3.2.关系运算符(运算结果为布尔值)

关系运算符一般用于进行数据大小比较,对象的判断之类操作,运算结果通常是布尔类型值,java中的关系运算符主要有以下:

符号说明
>大于
<小于
>=大于等于
<=小于等于
==等于(比较)
!=不等于
int a = 10;
int b = 15;
String c = "hello";
String d = "hello";
System.out.println(a > b);
System.out.println(a < b);
//比较运算符中==和!= 可以用于引用类型之间的比较
System.out.println(c == d);
System.out.println(c != d);

注意事项:

  1. 比较运算符通常两边的运算数都是数值类型
  2. 比较运算的结果是布尔类型
  3. ==!=可以用于引用数据类型的比较(不推荐)

3.3.布尔逻辑运算(运算结果为布尔值)

布尔逻辑运算符一般用于对关系运算或者布尔条件判断

符号说明
&与运算
|或运算
&&短路与
||短路或

在这里插入图片描述

int i = 10;
int j = 5;
int k = 3;

boolean b =  i < k & i > j++; // false & true
System.out.println(b);
System.out.println(j);

boolean b2 = !(i > j);
System.out.println(b2);

面试题:

  1. &和&&什么区别?

&:用于对运算符左右两侧的表达式进行与运算,无论运算符左边的表达式是否为true,运算符右侧表达式始终会执行

&&:相对上述符号的区别在于,一旦运算符左侧的表达式为false,则右侧表达式将不再执行(短路)

3.4.位运算符

计算机中底层的所有运算都会转换成二进制位进行计算,

符号说明
&与(1 & 0 = 0、1&1=1、0&0=0)
|或(1|1=1、0|1=1、0|0=0)
~取反(0->1 1->0)
^异或(1^1 = 0、01=1、00=0)
>>右移
<<左移
>>>无符号右移
int i = 5;
int j = 6;
System.out.println(i + j);
// 1010101010

int n = 8;
System.out.println(n/4);
System.out.println(n-6);


//0000 1000
//     1*2^3 + 0*2^2 + 0*2^1 +0*2^0

//       8      4        2      1
//        System.out.println(n >> 2);
//        System.out.println(n << 3);

System.out.println(~n);

笔试题:

  1. 如何快速将8运算变成2
//将8转换为成为二进制:1000
//将二进制数右移两位:0010即可
System.out.println(8 >> 2);

3.5. 三目运算

三目运算符语法:

布尔表达式 ? 表达式1 : 表达式2;

基础案例

int age = 19;
//未成年人禁止入内
//大爷,来玩吧
String msg = age >= 18 ? "大爷,来玩吧":"未成年禁止入内";
System.out.println(msg);

复杂的使用方式

/**
 * 有一家网店,专卖内衣
 * 购买的数量<5  原价出售
 * 购买的数量 [5,10) 则打9折
 * 购买的数量是 [10,20), 打8折
 * 购买>=20 打6折
 * <p>
 * 单价5元,现在购买15件,请问需要多少钱?
 *
 * @author mrchai
 * 2021/7/5
 */
public class Demo1 {

    public static void main(String[] args) {
        //总购买数
        int count = 30;
        //单价
        double price = 5.0;

        double result = count < 5 ? count * price : count < 10 ?
            count * price * 0.9 : count < 20 ? count * price * 0.8 : count * price * 0.6;
        //ctrl+alt+L 格式化代码
        System.out.println("总价:" + result);
    }
}

3.6.其他运算符

符号说明
+=、-=、*=、/=扩展赋值运算
+字符串拼接运算
int i = 10;
i += 10; // i = i + 10
System.out.println(i);

i*=10;
System.out.println(i);


//        short s = 10;
//        s = s + 10; // 编译错误,处理方式: s = (short)(s + 10);
//        s += 10; //包含类型隐式转换,正常运行通过

//java中任何变量和字符串相加都会自动将+符号识别字符串拼接
System.out.println(10 + 20 + 30 + "40"); //6040
System.out.println("10" + 20 + 30 + 40);

String name = "wade";
//调用符号“.”
int len = name.length();
System.out.println(len);

3.7.运算符优先级

java中所有的运算符在运行期间都有不同的优先级,但是所有的优先级问题都可以通过()解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西伯利亚大熊猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值