JAVA基础语法

目录

快捷键

注释

关键字

标识符

常量

变量

数据类型(Type)

ASCII表

运算符

表达式

Scanner

流程控制语句

Math#random()

数组

方法

参数传递中的问题



快捷键

主函数:jsvm

复制代码
public static void main(String[] args){}

输入语句:sout

复制代码
System.out.println();

遍历数组:itar

复制代码
for (int i = 0 ; i < arr.length ; i++){ 
}

抽取方法(idea):ctrl+alt+m

快速打印值(idea):.sout

用变量接收值(idea):.var

注释

单行注释://

多行注释:/* */

文档注释:/** */,用于修饰类和方法(实际开发用)

关键字

关键字:被Java语言赋予了特殊含义的单词,如public、class、static、void、protected、private

保留字:有关键字的作用,在以后版本可能会成为关键字

标识符

用于类、接口、变量、常量的起名

命名规则

1.必须由英文字母开头,数字,_ ,$组成

2.不能以Java关键字命名

命名规范

类、接口

大驼峰命名法:每个单词的首字母都大写,其他全部小写,例如:StudentId

变量、方法

小驼峰命名法:从第二个单词开始,每个单词的首字母都大写,其他小写,例如zhangAge

常量

所有字母全部大写,单词间用' _ '隔开,例如:MAX_VALUE

包名

所有的字母全部小写,一般是公司的域名反写(不要www),多级包之间用' . '隔开

例如com.it.demo

常量

字面值常量

①字符:'',字符有且只能又一个

复制代码
System.out.println('你');

②字符串:"",

复制代码
System.out.println(''Hello,World!'');

③整数

④小数

⑤布尔

复制代码
System.out.println(true);

⑥空

空常量不能直接打印

复制代码
String s = null;

System.out.println(s);

自定义常量

通过final修饰

变量

程序执行过程中,其值能在一定范围内(数据类型)发生改变的量,使用变量前必须先赋初值

复制代码
{

int age = 18;

System.out.println("age : " + age);  //字符串拼接

}  //大括号执行完毕,括号中的内容就释放,提高效率,节约资源

数据类型(Type)

限定变量值的变化

基本类型

整型:byte(1字节),short(2字节),int(4字节),long(8字节)

复制代码
//默认整型是int

byte a1 = 10;  //语法糖:语法的简化

long l = 10L;      //L后缀是为了区分

浮点型:float(4字节)、double(8字节)

复制代码
默认浮点型是double

float f = 10.1F;

double d = 10.2;

字符型:char(2字节)

复制代码
char ch1 = '男';

布尔型:boolean(1字节)

复制代码
boolean flag1= false;

boolean flag1= true;

引用类型

除了上述之外所有,例如:类,接口,数组

数据类型转换

隐式类型转换/自动类型转换:把小范围的值给大范围的数据类型

复制代码
//byte -> short,char -> int ->long -> float -> double

int a = 10;

double d = a;

显示类型转换/强制类型转化:把大范围的值给小范围的数据类型,可能会丢失精度

复制代码
//数据类型 变量名 = (目标数据类型)变量值

int c =(int) 10.2;

ASCII表

描述字符(char)和int之间的关系

计算机存储数据:'男' -> 数字(十进制)-> 数字(二进制)-> 存储

计算机读取数据:读取二进制数据 -> 十进制 ->对应的内容

'a':97

'A':65

'0':48

打印字母ASCII码:System.out.println('a' + 0);

其他码表:GBK(国内),UTF-8(万国码,统一码)

运算符

用于操作变量和常量

算数运算符:+ , - , * , / , % , ++ , --

赋值运算符:= , += , -= , *= , /=

关系运算符: > , <

逻辑运算符:&& , || , !

三元运算符:条件表达式 ? 表达式1 : 表达式2

表达式

用运算符连接起来的式子

算数表达式:a + b

条件表达式:a > b

Scanner

类似于Python中的input{},用来键盘录入

使用步骤:

1.导包 import java.util.Scanner;

2.创建对象 Scanner sc = new Scanner(System.in);

3.调用方法 int num = sc.nextInt();

流程控制语句

顺序结构

复制代码
System.out.println("start");

System.out.println(5 + 5 + "hello" + 5 + 5);

System.out.println("end");

//第二条语句输出:10hello10

分支结构

if单分支:用于范围校验

if(关系表达式1){

语句体1;

}else{

语句体2

}

if多分支:用于范围校验

if(关系表达式1){

语句体1;

}elseif(关系表达式2){

语句体2;

}elseif(关系表达式3){

语句体3;

}... ...

else{

语句体n

}

switch:用于固定值校验

switch(值){

case 值1;

语句体1;

break;

case 值1;

语句体1;

break;

... ...

default:

语句体n;

break;

}

循环结构

for:用于循环次数已知

for(初始化条件;判断条件;控制条件){

循环体;

}

while:用于循环次数不固定

初始化条件;

while( 判断条件 ){

循环体;

控制条件;

}

死循环

while(true){}

控制跳转

break:终止循环,循环不再进行

continue:跳出本次循环,进行下一次循环

Math#random()

用来取一个随机数,范围是:0.0 ~ 1.0,左闭又开,是静态方法,被类名点的方式直接调用

复制代码
double num = Math.random();

System.out.println(num);

数组

概述:用来同时存储多个同类型元素的容器

初始化

动态初始化:指定长度,由系统给出默认值

格式1:数据类型[] 数组名 = new 数据类型[长度]

格式2:数据类型 数组名 = new 数据类型 [长度]

复制代码
int [] arr =new int[3];

int arr[] = new int[3];

//new表示向堆内存申请开辟空间

静态初始化:给出初始化值,由系统给出长度

格式1:数据类型[] 数组名 =new 数据类型[] {值1,值2,值3...}

格式2:数据类型[] 数组名 ={值1,值2,值3...}

复制代码
int [] arr =new int[] {12,13,14};

int [] arr ={12,13,14};   //语法糖

特点

1.数组中每个元素都有编号(索引,下标,脚标),默认从0开始

2.数组中每个元素都有默认值,int->0,double->0.0,boolean->false,String->null

常用格式

数组名[索引],根据索引获取值

数组名[索引] = 值,根据索引修改该位置的值

数组名.length,获取数组长度

数组名.length - 1,获取数组的最大索引

内存图(简图)

两个小问题

1.空指针异常,NullPointerException

产生原因:数组为null,还去访问数组中的元素(null表示没地址指向了)

解决方案:给数组赋值

2.索引越界异常,ArrayIndexOutOfBoundsException

产生原因:访问量数组中不存在的索引

解决方案:访问数组中存在的即可

常见案例

数组遍历

复制代码
//快捷键 itar

for (int i = 0 ; i < arr.length ; i++){ 
}

获取数组最大值

复制代码
int max = arr[0];

for(int i =1 ; i < arr.length ; i++ ){

    if (arr[i] > max){

        max = arr[i];

    }

}

方法

将具有独立功能的代码块组织成一个整体,使其成为具有特殊功能的代码集,Java中函数也叫方法,Python中函数比方法级别高

格式:

修饰符 返回值的数据类型 方法名(数据类型 参数名1,数据类型 参数名2){

方法体;

return 具体的返回值;

}

//写方法时最好去做非法值判断

复制代码
public class Demo{
    public static void main(String args[]){    //main方法,程序的主入口
        getsum(10,20);      //调用方法,传参

    }
/**
 *1.定义方法,用来计算两个整数的和
 *2.a和b,要求和的整数
 *3.sum,a和b之和
*/
    public static int getsum(int a , int b){
            int sum = a + b;
            return sum;
    }
}

方法重载

同一个类中,出现的方法名相同,但是参数列表不同(个数不同或对应的数据类型不同)的两个或者以上的方法时,称为方法重载,方法重载与返回值的数据类型无关

应用场景:用来解决功能相似或相同,但是方法名不能相同的问题

参数传递中的问题

1.形参如果是基本类型,则形参的改变对实参没有影响,传递的是数值,叫值传递

2.形参如果是引用类型,则形参的改变对实参有直接影响,传递的是地址值,叫引用传递

3.String虽然是引用类型,但是作为形参时,用法与基本类型一致

相关推荐
渡我白衣2 小时前
深入剖析:boost::intrusive_ptr 与 std::shared_ptr 的性能边界和实现哲学
开发语言·c++·spring
爱吃小胖橘2 小时前
Lua语法
开发语言·unity·lua
怀旧,2 小时前
【C++】26. 智能指针
开发语言·c++·算法
Haooog2 小时前
654.最大二叉树(二叉树算法)
java·数据结构·算法·leetcode·二叉树
我真的是大笨蛋2 小时前
依赖倒置原则(DIP)
java·设计模式·性能优化·依赖倒置原则·设计规范
Aevget3 小时前
PHP智能开发工具PhpStorm v2025.2全新上线——支持PHPUnit 12等
开发语言·ide·php·phpstorm
东方芷兰3 小时前
JavaWeb 课堂笔记 —— 20 SpringBootWeb案例 配置文件
java·开发语言·笔记·算法·log4j·intellij-idea·lua
许商3 小时前
【stm32】bash自动配置buildenv
开发语言·bash
reembarkation3 小时前
自定义分页控件,只显示当前页码的前后N页
开发语言·前端·javascript