Java基础—— 基础语法

注意:其中资料来源于蓝桥云课(https://www.lanqiao.cn/)尚硅谷(http://www.atguigu.com/)以及百度(www.baidu.com),有兴趣的小伙伴可以去官网学习,这里是小编自己学习后整理的资料,有误之处欢迎留言讨论,谢谢!

环境搭建

**注:因为蓝桥云课自带环境所以无需搭建,可直接跳过,这是搭建本地主机的环境。**

● 学习用的是 8 版本
在这里插入图片描述

下载网址

○ www.oracle.com
○ java.sun.com
○ http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装jdk

注:路径不要包含中文和空格
○ 右击 我的电脑 → 属性 → 高级系统设置 →高级 → 环境变量
○ JAVA_HOME : jdk安装路径
○ CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个"."
○ Path : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

测试

○ 开始 → 运动 → 输入 “cmd”
○ 键入命令: java -version、java、javac 几个命令,出现以下信息,说明环境变量配置成功

软件

推荐eclipse 或者IDEA

简介

Java 中所有的代码都必须包含在 class 中,main 方法是程序的入口,并且 Java 是区分大小写的,如果写成 Main,那么程序将因找不到程序入口而无法运行。使用 public 修饰的 class 名(HelloWorld)须和源代码文件名相同。

编译源代码

输入 javac HelloWorld.java,如果程序没有任何提示,并且在同级目录下生成了一个 .class 扩展名的文件,那么说明编译成功,反之编译失败。
运行程序:输入 java HelloWorld,这个时候不需要再添加扩展名了。
在这里插入图片描述

变量

● 程序通过改变变量的值来改变整个程序的状态。为了方便使用变量,所以变量都需要命名,叫做变量名。
● 格式:数据类型 变量名称;
常量
● 常量的值是不能被修改的,Java 中的 final 关键字可以用于声明属性(常量),方法和类。当 final 修饰属性时,代表该属性一旦被分配内存空间就必须初始化,它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字 final 即可声明一个常量。在 Java 编码规范中,要求常量名必须大写。
● 格式:final 数据类型 常量名 = 值;

数据类型

在这里插入图片描述
在这里插入图片描述

字符串(String)

字符串长度

//方法原型
public int length(){
}

字符串比较

public class StringTest {
    public static void main(String[] args){
        String s = new String("Java");
        String m = "java";
        System.out.println("用equals()比较,java和Java结果为"+s.equals(m));
        System.out.println("用equalsIgnoreCase()比较,java和Java结果为"+s.equalsIgnoreCase(m));
    }
}

在这里插入图片描述
注意
○ 若想忽略大小写 调用 equalsIgnoreCase() 其他写法一样
○ “==” 是比较两个对象在内存中存储的地址是否一样
在这里插入图片描述
变量 b 的值是 false,因为 s1 对象对应的地址是 “abc” 的地址,而 s2 使用 new 关键字申请新的内存,所以内存地址和 s1 的 “abc” 的地址不一样,所以获得的值是 false。

字符串连接

○ 使用 +,比如 String s = "Hello " + “World!”。
○ 使用 String 类的 concat() 方法。
charAt() 方法
作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。

```java
String s = "abc";
char c = s.charAt(1);

===>    变量 c 的值是 'b'

常用字符串提取方法

在这里插入图片描述

StringBuilder

String 是无法被修改的,对 String 的修改,其实是新建了一个 String 对象。如果需要修改字符串的内容,可以使用 StringBuilder。它相当于一个存储字符的容器。

初始化

构造一个不包含任何字符且初始容量为 16 的 StringBuilder
StringBuilder a = new StringBuilder();
构造一个不包含任何字符且容量为 cap 的 StringBuilder
StringBuilder b = new StringBuilder(int cap);
构造一个 StringBuilder,内容初始化为 str

StringBuilder  c = new StringBuilder(String str);
public class StringBuilderTest {
    public static void main(String[] args){
        StringBuilder s1 = new StringBuilder();
        s1.append("java");
        StringBuilder s2 = new StringBuilder(5);
        StringBuilder s3 = new StringBuilder("shiyanlou");
        System.out.println("s1:" + s1.toString() + "\tcap:" + s1.capacity());
        System.out.println("s2:" + s2.toString() + "\tcap:" + s2.capacity());
        System.out.println("s3:" + s3.toString() + "\tcap:" + s3.capacity());
    }
}

==>
$ javac StringBuilderTest.java
$ java StringBuilderTest
s1:java cap:16
s2:     cap:5
s3:shiyanlou    cap:25

其中 s3 的 capacity 为 25 是因为初始容量 16 + shiyanlou 的长度 9。

常用方法

在这里插入图片描述

算术运算符

![这里插入图片描述](https://img-blog.csdnimg.cn/b574fbdf02184438a2bf53c7f3526d79.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5pWyIOmSnyDkuro=,size_19,color_FFFFFF,t_70,g_se,x_16)

● 前缀自增自减法 (++i,–i): 先进行自增或者自减运算,再进行表达式运算。
● 后缀自增自减法 (i++,i–): 先进行表达式运算,再进行自增或者自减运算

位运算符

在这里插入图片描述

遗留问题点:按位右移和按位右移补零的区别?

逻辑运算符

在这里插入图片描述
&& 与 || 是具有短路性质,当按优先级顺序计算到当前表达式时,表达式的结果可以确定整个表达式的结果时,便不会继续向后进行判断和计算,而直接返回结果。

关系运算符

在这里插入图片描述
● 三目运算符
○ 布尔表达式 ?表达式 1 : 表达式 2;
○ 运算过程:如果布尔表达式的值为 true,则返回表达式 1的值,否则返回表达式 2的值。
● == 和 != 适用于所有的基本数据类型,其他关系运算符不适用于 boolean,因为 boolean 值只有 true 和 false,比较没有任何意义。
● == 和 != 也适用于所有对象,可以比较对象的引用是否相同。

运算符优先级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键字

在这里插入图片描述

方法

定义

在这里插入图片描述

访问修饰符:

代表方法允许被访问的权限范围, 可以是 public、protected、private 或者省略(default) ,其中 public 表示该方法可以被其他任何代码调用。

返回值类型

方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。

方法名

是方法的名字,必须使用合法的标识符。

参数列表

传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

方法体

方法体包含具体的语句,定义该方法的功能。
根据方法是否带参、是否带返回值,可将方法分为四类:
● 无参无返回值方法
● 无参带返回值方法
● 带参无返回值方法
● 带参带返回值方法

IF 语句

语法一

在这里插入图片描述

语法二

在这里插入图片描述

语法三

在这里插入图片描述
在这里插入图片描述

if嵌套

在这里插入图片描述

switch语句

语法

在这里插入图片描述

当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。
● defualt 块不是必须的,默认为空。

while 和 do-while 语句

while语法:
在这里插入图片描述

  1. 判断 while 后面的条件是否成立 ( true or false )
  2. 当条件成立时,执行循环内的代码。

do-while 语法

在这里插入图片描述

  1. 先执行一遍循环操作,然后判断循环条件是否成立。
  2. 如果条件成立,继续执行1、2,直到循环条件不成立为止
    在这里插入图片描述

for 语句

语法

在这里插入图片描述
for 相比 while 和 do-while 语句结构更加简洁易读,它的执行顺序:

  1. 执行循环变量初始化部分(1),设置循环的初始状态,此部分在整个循环中只执行一次。
  2. 进行循环条件的判断(2),如果条件为 true,则执行循环体内代码(4);如果为 false ,则直接退出循环。
  3. 执行循环变量值操作部分(3),对循环变量的值进行修改,然后进行下一次循环条件判断(2)。
    在这里插入图片描述

习题 字符串处理

● 从控制台输入一行字符串
● 去除字符串中的所有空格
● 打印去除空格后的字符串

import java.util.Scanner;
public class StringUtil {
    public static void main(String[] args) {
        Scanner in =new Scanner(System.in);
        //获取String值
        String a=in.nextLine();
        StringBuilder stringBuilder = new StringBuilder(a);
        for (int i = 0; i < stringBuilder.length(); i++) {
            if (stringBuilder.charAt(i)==' ') {
                stringBuilder.deleteCharAt(i);
                i--;
            }
        }
        System.out.println(stringBuilder.toString());
    }
}

习题 对比字符串

● 从控制台输入字符串 a 和字符串 b
● 比较字符串 a 和字符 b 是否完全一致,长度,内容等完全一致。
● 如果完全一致,输出相同,如果不一致,输出不同。
● 禁止使用equals方法

import java.util.Scanner;
public class ContrastString{
    public static void main(String[] args){
            Scanner in=new Scanner(System.in);
            String a = in.nextLine();
            String b = in.nextLine();
            boolean flag=true;
            if(a.length()!=b.length())
                flag=false;
            else{
                for(int i=0;i<a.length();i++){
                    if(a.charAt(i)!=b.charAt(i)){
                        flag=false;
                        break;
                    }
                }
            }
            if(flag)
                System.out.println("相同");
            else    
                System.out.println("不相同");
    }
}

跳转语句

● break 关键字经常用在条件和循环语句中,用来跳出循环语句。
习题 打印星期
● 从控制台获取一个整型参数
● 当输入数字 1 时输出今天是星期一
● 当输入数字 2 时输出今天是星期二

import java.util.Scanner;
public class PrintWeek{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int a=in.nextInt();
        System.out.print("今天是星期");
        switch(a){
            case 1:
                System.out.println("一");
                break;
            case 2:
                System.out.println("二");
                break;
            case 3:
                System.out.println("三");
                break;
            case 4:
                System.out.println("四");
                break;
            case 5:
                System.out.println("五");
                break;
            case 6:
                System.out.println("六");
                break;
            case 7:
                System.out.println("日");
                break;
        }
    }
}

数组

有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。
在这里插入图片描述

下标从 0 开始,到数组长度 -1 结束。

语法

在这里插入图片描述

语法二

在这里插入图片描述
注意点

  1. 数组下标从 0 开始。所以数组的下标范围是 0 至 数组长度 -1。
  2. 数组不能越界访问,否则会报错。
    for语法强化
    在这里插入图片描述
public class JudgePrime{
    public static void main(String[] args){
        int[] ages={12,18,9,33,45,60};
        int i=1;
        for(int age:ages){
            System.out.println("数组中第"+i+"个元素是"+age);
            i++;
        }
    }
}

二维数组

语法

在这里插入图片描述

习题 数组应用

有一份成绩单,上面有 10 位学生的成绩(61,57,95,85,75,65,44,66,90,32),请求出平均成绩并输出。

public class AverageScore{
    public static void main(String[] args){
        int[] score={61,57,95,85,75,65,44,66,90,32};
        double avg=0;
        int sum=0;
        for(int i=0;i<10;i++)
            sum+=score[i];
        avg=sum/10;
        System.out.println(avg);
    }
}

知识点
● 输入
○ 导包 import java.util.Scanner;
○ 定义 Scanner in= new Scanner(System.in);
○ 输入
■ 字符串 in.nextLine();
■ 整形 in.nextInt();
■ …
○ 关闭输入
■ in.close();

来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值