java基础语法

java语言

语言:人与人交流沟通的方式

计算机语言:人与计算机进行交流的一种特殊语言

java语言是美国sun公司1995年推出的计算机语言

2004年9月java1.5发布改为5.0

2009年SUN公司被Oracle收购

java之父:詹姆斯·高斯林

java语言发展史

java5.0跨度特别大,java8.0是公司常用的版本

JRE和JDK

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,类似于翻译官的存在,可实现跨平台。

JRE(Java Runtime Environment)是java程序开发运行时环境,包含JVM和运行时所需的核心类库,我们想要运行一个已有的Java程序只需安装jre即可。

JDK(Java Development Kit)是java开发工具包,包含JRE和开发人员使用的开发工具(编译工具javac.exe和运行工具java.exe。

JDK的安装

官网地址:http://www.oracle.com注意针对不同的操作系统下载对应的jdk版本

目录不能有空格和中文

目录

bin:存放各种工具命名

conf:相关配置文件

include: 存放了一些平台特定的头文件

jmods:模块

legal:授权文档

lib:补充JAR包

常用DOS命令

win+r 输入cmd

dir:查看当前路径下的内容

cd… :回退到上一级目录

cd 目录\目录\目录… 进入多级目录

cls:清屏

exit:退出命令提示符窗口

Path环境变量的设置
  1. 新建JAVA_HOME环境变量,输入我们的安装路径(bin的上一级)
  2. 配置Path :%JAVA_HOME%\bin(建议放在最上边)
  3. 验证:cmd输入javac回车、java回车
HolloWorld案例:

打开命令提示符cmd,进入到HelloWorld.java所在的目录输入编译指令和执行指令:

编译:javac 文件名.java

执行:java 类名

HelloWorld案列常见问题

BUG:多看多思考多查阅资料,多尝试多总结

中英文符号问题:eg:非法字符

单词拼写问题:eg :程序包…不存在

Notepad软件的安装和使用:

傻瓜式安装,注意选择安装路径。设置:设置->首选项->新建->默认语言为Java 编码为ANSI

在里面编写程序会出现行号,便于调试

注释

概述:注释是指在程序指定位置添加的说明性信息,注释不参与程序运行,仅起到说明作用

注释分类

单行注释://注释信息

多行注释:/* 注释信息 */

文档注释:/** 注释信息 */

关键字

被java语言赋予了特定含义的单词

关键字特点

字母全部小写

常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观

常量:

在程序运行过程当中,其值不可以发生改变的量

常量分类:

字符串常量:用""括起来的内容

整数常量:不带小数的数字

小数常量:带小数的数组

字符常量:用’'括起来的内容

布尔常量:表示真假,只有两个值;true,false

空常量:null 不能直接输出

数据类型

Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以他们表示的数据大小也是不一样的
在这里插入图片描述
在这里插入图片描述
boolean类型数据只能取值true或false,不可以0或非0的整数替代false和true这点和c语言不同

整数默认是int类型, 浮点数默认是double类型(long L float F)

变量

在程序运行过程中其值可以发生改变的量。从本质上讲,变量是内存中的一小块区域。

格式:数据类型 变量名=变量值;eg:int a=10;

使用:取值 a ; 修改 a=20;

注意事项:名字不能重复;未赋值不能使用;long类型为防止证书过大,后面要加L;float类型定义的时候,为了防止内容不兼容,后面要加F

标识符

就是给类,方法,变量等起名字的符号。

由**数字、字母、下划线_和美元字符$**组成

不能以数字开头

不能是关键字

区分大小写

约定:

小驼峰命名法:方法、变量

标识符是一个单词的时候,首字母小写 eg:name

标识符由多个单词组成的时候,第一个单词字母小写,其他单词首字母大写eg:firstName

大驼峰命名法:类、接口

标识符是一个单词的时候,首字母大写eg:Student

标识符多个单词每个单词首字母大写eg:GoodStudent

类型转换

自动类型转换

把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量

在这里插入图片描述
byte和char类型不兼容

强制类型转换

把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量

格式:目标数据类型 变量名=(目标数据类型)值或者变量 eg: int k=(int)88.88;(k=88)

算术运算符:

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合Java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

+、-、*、/、%

除法得到商,取余得到的是余数

字符的+操作

拿字符在计算机底层对应的数值来进行计算的

‘A’–>65

‘a’–>97

‘0’–>48

算术表达式中包含多个基本数据类型时,整个算术运算符的类型自动进行提升

byte short char 类型会自动提升到int类型

整个表达式的类型会提升到表达式中最高等级操作数同样的类型

byte,short,char–>int -->long–>float–>double

字符串的+操作

在+操作中,如果出现了字符串,就是连接运算符,否则就是算术运算,当连续进行“+”操作时,从左到右逐个执行eg:1+99+"年黑马"为100年黑马

赋值运算符

=、+=、-=、*=、/=、%=(eg:a+=b;将a+b的值给a)

int a=10;//把10赋值给a

注意:扩展的赋值运算符底层隐含了强制类型转换

short s=10;

s+=20; s=(shrot)(s+20);

自增、自减运算符

单独使用:++、–无论是放在变量的前面还是后面结果是一样

参与操作:

如果放在变量的后面,先拿变量值参与操作,后拿变量++或–;

如果放在变量的前面,先拿变量做++或者–,后拿变量参与操作

关系运算符

==、!= 、>、 >=、 <、 <= 成立返回true,不成立返回false

逻辑运算符

& | ^ !

短路逻辑运符

&& ||

作用和&,| 相同,但是具有短路效果(右边可能不执行)

三元运算符

格式:关系表达式?表达式1:表达式2; eg:a>b?a:b;

先计算关系表达式的值,如果为true,表达式1的值就是运算结果;如果为false,表达式2的值就是运算结果

数据输入

Scanner使用的基本步骤:

1导包 :import java.util.Scanner;

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

3接收数据:eg:int i=sc.nextInt();

流程控制

顺序结构:按代码编写的先后顺序依次执行

分支结构(if switch):

if(){}

if(){}else{} eg:奇偶数

if(){}else if(){}…else{}

switch(表达式){//表达式取值为byte short int char jdk5以后可以是枚举,jdk7以后可以是String

case 值1:

​ 语句体1;break;

case 值1:

​ 语句体1;break;

default:

​ 语句体n+1; break;

}

注意:如果case控制语句体后面不写break,将会出现穿透现象,在不判断下一个case值得情况下,向下运行,知道遇到break;或者整体switch语句结束

循环结构(for, while, do…while)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三种循环区别:for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行,后判断)

for和while的区别

条件控制语句所控制的自增变量;因为归属在for循环语法结构中,在for循环结束后,就不能再次被访问到了,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

跳转控制语句

continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行

break 用在循环中,基于条件控制,终止循环体内容的执行,结束当前的整个循环

增强for循环
for(int t:a){
    //a是要遍历的对象;每循环一次从数组中取出一个元素赋值给t
}
IDEA中的内容辅助键和快捷键

快速生成main()方法:psvm回车 或 main 回车

快速生成输出语句:sout

内容提示代码补全:Ctrl+Alt+space

格式化:Ctrl+Alt+L

soutm 回车 输出方法名称

soutv 回车 输出变量,参数,就近输出

fori 生成for循环

iter 生成增强for循环

prsf 生成private static final

Psfi private static final int

Ctrl+d 整行复制

Ctrl+x 整行删除

Alt+回车 只能辅助

Alt+/ 激活代码提示

Ctrl+p 提示所有参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2IBC309-1648113508982)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1647510600200.png)]

数组

动态初始化:

int[] arr;
int[] arr=new arr[3];
//new 为数组分配内存空间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QRrueplC-1648113508987)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1646409932731.png)]

静态初始化:

int[] arr=new int[]{1,2,3};
//简化
int arr={1,2,3};//推荐

常见小问题:

索引越界:访问了数组中不存在的索引对应的元素,造成了索引越界问题。

空指针异常:访问的数组已经不再指向内存的数据,造成空指针异常。

null:空值,引用数据类型的默认值,表示不指向任何有效对象。

冒泡排序
public class BubbleSort implements IArraySort {

    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        // 对 arr 进行拷贝,不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

        for (int i = 1; i < arr.length; i++) {
            // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
            boolean flag = true;

            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                    flag = false;
                }
            }

            if (flag) {
                break;
            }
        }
        return arr;
    }
}
选择排序
public class SelectionSort implements IArraySort {

    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

        // 总共要经过 N-1 轮比较
        for (int i = 0; i < arr.length - 1; i++) {
            int min = i;

            // 每轮需要比较的次数 N-i
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    // 记录目前能找到的最小值元素的下标
                    min = j;
                }
            }

            // 将找到的最小值和i位置所在的值进行交换
            if (i != min) {
                int tmp = arr[i];
                arr[i] = arr[min];
                arr[min] = tmp;
            }

        }
        return arr;
    }
}
方法概述

方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

方法必须先创建才可以使用,该过程称为方法定义

方法创建够并不是直接运行的,需要手动使用后才执行,该过程称为方法调用。

public static void main(){
isEvenNumber();//方法调用
}
public static void  isEvenNumber(){
    //方法定义
}

形参和实参

形参:方法定义中的参数,等同于变量定义格式eg:int number;

实参:方法调用中的参数,等同于使用变量和常量 eg:10 number

方法注意事项

·方法不能嵌套定义

·void表示无返回值,可以省略return,也可以单独的写return;,后面不能加数据

方法重载

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

·多个方法在同一个类中

·多个方法有相同的方法名

·多个方法的参数不相同,类型不同或者数量不同

特点:仅对应方法的定义,与方法调用无关

重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否构成重载

方法参数传递

对于基本数据类型的参数,形式参数的改变,不影响实际参数的值

对于引用数据类型的参数,形式参数的改变,影响实际参数的值

类是对现实生活中具有共同属性行为的事物的抽象

类的特点

·类是对象的数据类型

·类是具有相同属性和行为的一组对象集合

对象的属性:对象具有各种特征,每个对象的每个属性都拥有特定的值

对象的行为:对象能够执行的操作

类和对象的关系:类是抽象的,对象是具体的

类的定义

是java程序的基本组成单位,是现实生活中一类具有共同属性行为的事物的抽象,确定对象将会拥有的属性和行为

类的组成:

属性:在类中通过成员变量来体现(类中方法外的变量)

行为:在类中通过成员方法来体现(和方法相比去掉static即可)

对象的使用

创建对象:类名 对象名=new 类名;

使用对象:对象名.变量名

成员变量和局部变量

成员变量:类中方法外的变量;堆内存;随着对象的存在而存在,随着对象的消失而消失;有默认的初始化值

局部变量:方法中或者方法声明上;栈内存;随着方法的调用而存在,随着方法的调用完毕而消失;没有默认的初始化值,必须先定义,赋值,才能使用

封装
private 关键字

是一个权限修饰符,可以修饰成员(成员变量和成员方法)

作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

·提供get变量名()方法,用于获取成员变量的值,方法用public修饰

·提供set变量名(参数)方法,用于设置成员变量的值,方法用public修饰

this关键字

this修饰的变量用于指代成员变量

·方法的形参如果与成员变量同名,不带this修饰符的变量值的是形参,而不是成员变量

·方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

什么时候使用:解决局部变量隐藏成员变量

封装概述

封装是面向对象的三大特征之一

是面向对象编程语言对客观世界的模拟,客观世界成员变量都是隐藏在对象内部的,外界是无法直接操作的

封装原则

将类的某些对象信息隐藏在类的内部,不允许外部程序直接访问,而是通过类提供的方法来实现对隐藏信息的操作和访问,成员变量private,提供对应的get和set方法

封装的好处:

通过方法来控制成员变量的操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性

构造方法

构造方法是一种特殊的方法,作用是创建对象

功能:完成对象数据的初始化

格式:修饰符 类名(参数){}

注意事项:

创建:

如果没有定义构造方法,系统给出一个默认无参构造方法

如果定义了构造方法,系统将不再提供默认的构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java基础语法是指Java语言的一些基本规则和约定,包括变量的定义、数据类型、运算符、控制语句、方法和类等。下面给出一些例子进行讲解: 1. 变量的定义 变量是存储数据的容器,Java中变量的定义需要指定数据类型。例如: ```java int num = 10; // 定义一个整型变量num,并赋值为10 String str = "Hello World"; // 定义一个字符串变量str,并赋值为"Hello World" double pi = 3.14; // 定义一个双精度浮点型变量pi,并赋值为3.14 ``` 2. 数据类型 Java中有基本数据类型和引用数据类型两种。基本数据类型包括整型、浮点型、字符型和布尔型,引用数据类型包括数组、类和接口等。例如: ```java int num = 10; // 整型 double pi = 3.14; // 双精度浮点型 char ch = 'A'; // 字符型 boolean flag = true; // 布尔型 int[] array = {1, 2, 3}; // 数组 String str = "Hello World"; // 字符串 ``` 3. 运算符 Java中的运算符包括算术运算符、关系运算符、逻辑运算符等。例如: ```java int num1 = 10, num2 = 20; int sum = num1 + num2; // 算术运算符 boolean result = num1 > num2; // 关系运算符 boolean flag = true, flag2 = false; boolean result2 = flag && flag2; // 逻辑运算符 ``` 4. 控制语句 Java中的控制语句包括if语句、for语句、while语句等。例如: ```java int num = 10; if (num > 5) { // if语句 System.out.println("Num is greater than 5"); } for (int i = 0; i < 10; i++) { // for语句 System.out.println(i); } int i = 0; while (i < 10) { // while语句 System.out.println(i); i++; } ``` 5. 方法和类 Java中的方法是可重复使用的代码块,而类是用于封装数据和方法的基本单位。例如: ```java public class HelloWorld { // 定义类 public static void main(String[] args) { // 定义主方法 System.out.println("Hello World"); // 输出Hello World } public void print(String str) { // 定义方法 System.out.println(str); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值