java的基础语法(1)

注释

又又又来到学习新语言的第一课注释。
java的注释有三种

注释名称 写法 快捷键 作用
单行注释 // ctrl + / 注释单行
多行注释 /* */ ctrl + shift + / 注释多行
文档注释 /* * */ 输入 /** + Enter 说明方法/类的作用 。一般用在类、方法、成员变量上,且在其上的注释内容会被提取到程序说明文档中去

使用通义灵码写注释。
使用通义灵码再也不怕屎山代码了
选中你要注释的代码,右击选择
在这里插入图片描述
然后点击插入
在这里插入图片描述
生成注释如下

/**
 * 包名: com.itheima.comment
 * 该包下可能包含与注释相关的类或接口
 */
package com.itheima.comment;

/**
 * 类名: Comment
 * 该类包含程序的入口点,用于演示或测试某些功能
 */
public class Comment {
    
    
    /**
     * 主函数: 程序的入口点
     * 该方法主要用于打印一个简单的字符串到控制台
     * @param args 命令行参数,本方法中未使用
     */
    public static void main(String[] args) {
    
    
        // 打印字符串 "Sefhuk" 到控制台
        System.out.println("Sefhuk");
    }
}

字面量

字面量:就是程序中能直接书写的数据,学这个知识的重点是:搞清楚Java程序中数据的书写格式。
字面量的分类
在这里插入图片描述

public class LiteralDemo {
    
    
    public static void main(String[] args) {
    
    
        printLiteral();
    }
    public static void printLiteral() {
    
    
        // 1、整型字面量,直接写
        System.out.println(1);
        // 2、浮点型字面量,直接写(小数)
        System.out.println(1.0);
        // 3、布尔型字面量,只有true false
        System.out.println(true);
        System.out.println(false);

        // 4、字符型字面量,用单引号括起来,里面有且仅有一个字符
        System.out.println('a');
        System.out.println('豪');
        // System.out.println('徐磊'); // 报错
        System.out.println(' ');
        // System.out.println('');// 报错

        // 掌握一些特殊的字符:\n(换行功能) \t(Tab缩进功能)
        System.out.println("hello\nWorld");
        System.out.println("hello\tWorld");

        // 5、字符串字面量,用双引号括起来,里面可以有任意字符
        System.out.println("aaa");
        System.out.println("");
        System.out.println("   afsfa");
        System.out.println("我爱你中国666abc");
    }
}

变量详解

认识变量

变量就是内存中的一块区域,可以理解成一个盒子,用来装程序要处理的数据的。
语法

   int    age   =  18;
数据类型 变量名称 = 数据;

为什么要用变量记数据?答:使用变量记要处理的数据,编写的代码更灵活,管理代码更方便。

变量有啥特点?
变量里装的数据是可以被替换的。

int age = 18; age = 19;

System.out.println(age); // 19
age = age + 1;
System.out.println(age); // 20

变量有啥应用场景呢?答:写程序对数据进行处理就很方便了。
使用变量的几点注意事项

  1. 变量要先声明才能使用
  2. 变量是什么类型,就必须装什么类型的数据
  3. 变量是从定义开始到“}”截止的范围内有效
  4. 同一个范围内,变量的名称不能一样
  5. 变量定义的时候可以不赋初始值;但在使用时,变量里必须有值。

变量里数据的存储原理

二进制

计算机中表示数据的最小单元
数据在计算机中的最小储存单元: 字节(byte,简称B)是,一个字节占8个比特位(bit,简称b),因此1B=8b
在这里插入图片描述
在B的基础上,计算机发展出了KB、MB、GB、TB、…. 这些数据单位。
1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

字符数据在计算机如何存储

ASCII编码表:即美国信息交换标准编码,规定了现代英语、数字字符、和其他西欧字符对应的数字编号。
在这里插入图片描述

图片数据是如何存储的

图片就是无数个像素点组成的
每个像素点的数据:用0 ~ 255255255表示其颜色

声音数据是如何存储的

在这里插入图片描述
总结
数据在计算机底层都是怎么存储的?
答:都是采用二进制:使用0、1,按照逢2进1的规则表示数据来存储。
如何快速的算出一个数据的二进制形式?
答:除二取余法
计算机底层表示数据的最小单元是什么?
答:字节,一个字节等于8个二进制位:1B=8b
字符数据在计算机中是怎么存的?
答:

  1. 字符存的是ascii码表中对应的数字的二进制形式。
  2. 字符’A’对应的数字是 65
  3. 字符’a’对应的数字是 97
  4. 字符’0’对应的数字是 48

图片和音视频等文件的数据是怎么存储的啊?
答:也是采用二进制进行存储的。

进制转换
这里不在过多赘述有兴趣的人可以了解一下。
Java程序中支持书写二进制、八进制、十六进制的数据,分别需要以0B或者0b、0、0X或者0x开头。
十六进制:最小数是0,最大数是15,共16个数字,依次用: 0~9 A B C D E F 代表就是十六进制。

数据类型

分为两大类:基本数据类型,引用数据类型。
基本数据类型:4大类8种。

数据类型 内存占用(字节数) 数据范围
整型 byte 1 -128~127
short 2 -32768~32767
int(默认) 4 -2147483648~2147483647 (10位数,大概21亿多)
long 8 -9223372036854775808 ~ 9223372036854775807**(19位数)**
浮点型(小数) float 4 1.401298 E -45 到 3.4028235 E +38
double(默认) 8 4.9000000 E -324 到1.797693 E +308
字符型 char 2 0-65535
布尔型 boolean 1 true,false

引用数据类:String

关键字,标识符

关键字

Java语言自己用的一些词汇,有特殊作用的,称之为关键字, 如:public、class、int、double…
注意:关键字是java用了的,我们就不能用来为做为自己的:类名、变量名,否则会报错!
java的关键字很多不需要刻意去记忆。

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

标识符

标志符就是名字(如类名、变量名…都是标识符)。
注意:取名字是有规则的

  1. 一般由数字、字母、下划线(_)和美元符($)等组成
  2. 不能以数字开头,不能是关键字,不能包含一些特殊字符(&、%、# …)
  3. 变量名:建议首字母小写,满足“驼峰模式”
  4. 类名:建议首字母大写,满足“驼峰模式”

例如
int studyNumber = 59;
HelloWorld、Student

方法

方法是什么

方法是一种用于执行特定任务或操作的代码块,代表一个功能,它可以接收数据进行处理,并返回一个处理后的结果。
在这里插入图片描述

方法的语法

修饰符  返回值类型  方法名( 形参列表 ){
    
            
 	方法体代码(需要执行的功能代码)      
 	return 返回值;
}

publicstatic是方法的修饰符  返回值类型 方法名称   形参列表
public     static              int      max    (int a , int b){
    
    
    int max = a > b ? a : b;
    // 方法的执行代码(处理数据)
	return max;
	// 返回处理后的结果
}

方法必须被调用才能执行,调用格式:方法名称(数据)

方法的其他写法

//  打印3行Hello World(使用方法):无参数无返回值的方法
public static void print(){
    
          
	System.out.println("Hello World");    
	System.out.println("Hello World");  
	System.out.println("Hello World");
}
//如果方法不需要返回数据,返回值类型必须声明成void(无返回值声明)
// 方法内部不可以使用return返回数据

总结
什么是方法?方法的完整格式是啥?
答:是用于执行特定任务或操作的代码块,可以接收数据进行处理并返回一个处理的结
定义满足需求的方法格式,主要考虑哪两方面?
答:方法是否需要接收数据,方法是否需要返回数据。
方法如何使用?
答:必须进行调用才可以执行方法;调用格式:方法名称(…)。

方法的其他注意事项

1、方法可以重载。
一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。

public static void main(String[] args) {
    
    
        printVariable(3);// 3
}
public static void printVariable(int a) {
    
    
	System.out.println(a);
}
public static void printVariable(String str) {
    
    
 	System.out.println(str);
}
 public static void printVariable(int a, String str) {
    
    
	System.out.println(a);
	System.out.println(str);
}

2、无返回值的方法中可以直接通过单独的return;立即结束当前方法的执行。

public static void printVariable(int a) {
    
    
        System.out.println("a = " + a);
        return;
}

类型转换

自动类型转换

什么是自动类型转换,为什么要进行自动类型转换?
答:类型范围小的变量,可以直接赋值给类型范围大的变量。
注意:char类型本质是数字,比如a在ascii中对应数字97
在这里插入图片描述

public static void main(String[] args) {
    
    
        byte a = 4;
        print(a);
    }
    public static void print(int b){
    
    
        System.out.println(b);
    }

自动类型转换在计算机中的执行原理如下
在这里插入图片描述

强制类型转换

什么是强制类型转换,为什么要进行强制类型转换?
答:类型范围大的变量, 不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换过去
语法如下:

数据类型 变量2 = (数据类型)变量1、数据
public static void main(String[] args) {
    
    
        int a = 20;
        // 数据类型 变量2 = (数据类型)变量1、数据
        byte b =  (byte)a;
        System.out.println(b); // 20
}

计算机中的执行原理如下
在这里插入图片描述

注意:强制类型转换可能造成数据(丢失)溢出;浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

public static void main(String[] args) {
    
    
        int i = 1500;
        byte j =  (byte)i;
        System.out.println(j); // -36
}

计算机中的执行原理如下:
之所以为负数是因为数据溢出。
在这里插入图片描述

public static void main(String[] args) {
    
    
        // 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
        double i = 15.4;
        byte j =  (byte)i;
        System.out.println(j); // 15
    }

表达式的自动类型提升

在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
表达式是指:x+5,x+y+9…等等。
在这里插入图片描述

注意事项:
表达式的最终结果类型由表达式中的最高类型决定。
在表达式中,byte、short、char 是直接转换成int类型参与运算的。

public static void main(String[] args) {
    
    
        int result = calc2((byte) 110, (byte) 120);
        System.out.println(result);// 230

        int result2 = calc3((byte) 110, (byte) 120);
        System.out.println(result2);// -26
    }
    // 返回值类型写int会报错
    public static double calc(int a, int b, double c, char r) {
    
    
        // 表达式的最终结果类型是有最高类型决定的
        return a + b + c + r;
    }
    // 返回值类型写byte会报错
    public static int calc2(byte a, byte b) {
    
    
        // byte short char运算时会直接提升成int运算。
        return a + b;
    }
    // 强转返回值类型写byte不会报错
    public static byte calc3(byte a, byte b) {
    
    
        byte c = (byte) (a + b);
        return c;
    }

输入输出

输出:把程序中的数据展示出来。System.out.println("Hello World!");
输入:程序读取用户键盘输入的数据。通过Java提供的 Scanner程序来实现

Scanner是Java提供好的API,程序员可以直接调用

API (Application Programming Interface:应用程序编程接口)
Java写好的程序,咱们程序员可以直接拿来调用。
Java为自己写好的程序提供了相应的 程序使用说明书(API文档)。
在这里插入图片描述
下载API文档 ⇒ API

使用Scanner接收用户键盘输入的数据,需要三个步骤:

  1. 导包:告诉程序去JDK的哪个包中找扫描器技术
  2. 抄代码:代表得到键盘扫描器对象(东西)。
  3. 抄代码:等待接收用户输入数据。

注意:
System、String在JDK中的Java.lang包下
lang包不需要我们导包,是默认的包。

package com.itheima.scanner;
// 1. 导包: 告诉我们自己的程序,去JDK哪里找Scanner程序用
import java.util.Scanner;

public class ScannerDemo1 {
    
    
    public static void main(String[] args) {
    
    
        printUserInfo();
    }
    // 需求:我是一个零基础小白,请帮我写一个程序,
    // 可以让用户键盘输入用户名和年龄,然后打印出来
    public static void printUserInfo() {
    
    
        // 2. 创建对象(抄写这一行代码,得到一个Scanner扫描器对象)
        Scanner sc = new Scanner(System.in);

        // 3. 获取用户输入
        System.out.println("请输入用户名:");// 键盘输入:hsh
        // 让程序在这一行暂停,等到用户输入一个字符串名称,
        // 直到按了回车键之后,把名字交给变量username记住再往下走
        String username = sc.next();
        System.out.println("您叫:" + username);// 您叫:hsh

        System.out.println("请输入年龄:");// 键盘输入:20
        // 让程序在这一行暂停,等到用户输入一个整数,
        // 直到按了回车键之后,把年龄交给变量age记住再往下走
        int age = sc.nextInt();
        System.out.println("您" + age + "岁。"); // 您20岁。
    }
}

运算符

算数运算符、+符号做连接符

算数运算符 如下:

符号 作用 说明
+ 参考小学一年级
- 参考小学一年级
* 参考小学二年级,与“×”相同
/ 与“÷”相同,注意:在Java中两个整数相除结果还是整数。
% 取余 获取的是两个数据做除法的余数

+符号在Java中的特殊用途:

  1. “+” 符号在有些情况下可以做连接符。
  2. “+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。

如何识别+符号是做运算,还是做连接:能算则算,不能算就连接在一起。

public static void main(String[] args) {
    
    
    print(10, 3);
    System.out.println("---------------------------------");
    print2();
}
public static void print(int a, int b) {
    
    
    System.out.println(a + b);// 13
    System.out.println(a - b);// 7
    System.out.println(a * b);// 30
    System.out.println(a / b); // 3.3333... ==> 3
    System.out.println((double) a / b);// 3.3333333333333335
    System.out.println(1.0 * a / b); // 3.3333333333333335
    System.out.println(a % b);// 1  因为 10/3 = 3 余 1
}

// 需求:研究+符号做连接符还是做运算符.
public static void print2() {
    
    
    int a = 5;
    System.out.println("abc" + a); // abc5
    System.out.println(a + 5); // 10
    System.out.println("hsh" + a + 'a'); // hsh5a
    System.out.println(a + 'a' + "hsh"); // 102hsh
}

自增自减运算符

自增自减运算符如下:

符号 作用
自增:++ 放在某个变量前面或者后面,对变量自身的值加1
自减:– 放在某个变量前面或者后面,对变量自身的值减1

注意:++ 、-- 只能操作变量,不能操作字面量的值。
例如System.out.println(10--);报错

public static void main(String[] args) {
    
    
    print(10);
    System.out.println("=========================");
    print2(10);
}

// 设计一个方法,接收一个整数。
public static void print(int a) {
    
    
    a++; // a = a + 1;
    ++a;
    System.out.println(a);// 12

    a--;
    --a;
    System.out.println(a);// 10
}

// 设计一个方法,理解自增和自减放在变量前后的区别
public static void print2(int a) {
    
    
    int b = a++; // 先用后加
    System.out.println(a); // 11
    System.out.println(b); // 10

    int c = ++a; // 先加后用
    System.out.println(a); // 12
    System.out.println(c); // 12
}

下面来个扩展

int c = 10;
int d = 5;
int rs3 = c++ + ++c - --d - ++d + 1 + c--;
System.out.println(rs3);// 26
System.out.println(c);// 11
System.out.println(d);// 5

赋值运算符

就是“=”,从右边往左看。
int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储。

符号 用法 作用 底层代码形式
+= a+=b 加后赋值 a = (a的类型)(a + b);
-= a-=b 减后赋值 a = (a的类型)(a - b);
*= a*=b 乘后赋值 a = (a的类型)(a * b);
/= a/=b 除后赋值 a = (a的类型)(a / b);
%= a%=b 取余后赋值 a = (a的类型)(a % b);

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

关系运算符、三元运算符

关系运算符如下:

符号 例子 作用 结果
> a>b 判断a是否大于b 成立返回true、不成立返回false
>= a>=b 判断a是否大于或者等于b 成立返回true、不成立返回false
< a<b 判断a是否小于b 成立返回true、不成立返回false
<= a<=b 判断a是否小于或者等于b 成立返回true、不成立返回false
== a==b 判断a是否等于b 成立返回true、不成立返回false
!= a != b 判断a是否不等于b 成立返回true、不成立返回false

判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false。
注意:在java中判断是否相等一定是"==" ,千万不要把"== "误写成 “=”。

三元运算符
语法:条件表达式 ? 值1 : 值2;
执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。

逻辑运算符

把多个条件放在一起运算,最终返回布尔类型的值:true、false。

符号 叫法 例子 运算逻辑
& 逻辑与 2 > 1 & 3 > 2 多个条件必须都是true, 结果才是true; 有一个是false,结果就是false
| 逻辑或 2 > 1 | 3 < 5 多个条件中只要有一个是true, 结果就是true;
! 逻辑非 ! (2 > 1) 就是取反:你真我假,你假我真。!true == false、!false == true
^ 逻辑异或 2 > 1 ^ 3 > 1 前后条件的结果相同,就直接返回false,前后条件的结果不同,才返回true
符号 叫法 例子 运算逻辑
&& 短路与 2 > 10 && 3 > 2 判断结果与“&”一样,过程不同:左边为 false,右边则不执行。
|| 短路或 2 > 1 | | 3 < 5 判断结果与“|”一样,过程不同:左边为 true, 右边则不执行。

开发一般使用 &&||

综合小案例

开发一个简单的健康计算器应用程序,它可以接受用户的输入(如年龄、性别、体重、身高),并计算出用户的BMI(身体质量指数)和基础代谢率(BMR)。

package com.itheima.demo;

import java.util.Scanner;

public class AllTest {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        // 1、先让用户输入自己的个人信息:身高、体重、性别、年龄
        System.out.println("请您输入您的身高:");
        double height = sc.nextDouble();

        System.out.println("请您输入您的体重:");
        double weight = sc.nextDouble();

        System.out.println("请您输入您的性别(男/女):");
        String sex = sc.next(); // "男"

        System.out.println("请您输入您的年龄:");
        int age = sc.nextInt();

        double bmi = calcBMI(height, weight);
        System.out.println("您的bmi值是:" + bmi);

        // 判断用户的bmi值的情况。。。

        double bmr = calcBMR(height, weight, sex, age);
        System.out.println("您的bmr值是:" + bmr);

        // 判断bmr的情况。。。
    }

    // 2、根据个人信息,计算BMI指数(把数据交给一个独立的方法来计算并返回这个结果)
    public static double calcBMI(double height, double weight) {
    
    
        return weight / (height * height);
    }

    // 3、根据个人信息,计算BMR指数(把数据交给一个独立的方法来计算并返回这个结果)
    public static double calcBMR(double height, double weight, String sex, int age) {
    
    
        double bmr = 0;
        if ("男".equals(sex)) {
    
    
            bmr = 88.362 + (13.397 * weight + 4.799 * height - 5.677 * age) ;
        } else {
    
    
            bmr = 447.593 + (9.247 * weight + 3.098 * height - 4.330 * age);
        }
        return bmr;
    }
}

猜你喜欢

转载自blog.csdn.net/h3169929477/article/details/147077536