Loading

02、Java语言基础

1、内存:

1.什么是内存?

  内存即是一块瞬时状态的存储空间,有一定的容量.

2.内存与硬盘的区别?

  内存的造价比较高,整个的计算机硬件资源是比较稀缺的.(内存得省着点用)

  工业上的瓶颈,多数大容量的内存都是由多个内存条组成的.

3.计算机给程序大多的内存空间?

  JAVA虚拟机(JAVA程序),默认分配的物理内存容量是计算机1/8。(省着点用)

4.计算机存储容量的基本单位?

  Byte(位)8位 = 1字节(8位=1 Byte)

  Byte(字节)

  KB-MB-Gb-TB-PB-EB-ZB-YB-BB-Nb-DB-CB-XB(1024进制)

2、变量的概念

概念:计算机内存中的一块存储空间,是存储数据的基本单元.

  整个内存就好像是酒店,当中包含了多个房间.

  房间的容量(大小)不同(单人间、两人间.)。

  每个房间都有一个唯一的门牌号.

  每个房间的住客(类型)也不同.

酒店的房间一变量

  房间的类型 —— 数据类型

  房间门牌号 —— 变量名

  房间的住客 —— 值

3、变量的定义流程

变量的定义流程:

  1、声明:

    数据类型 变量名;

    int money;/开辟整数变量空间

  2、赋值:

    变量名 = 值;

    money = 100;//将整数值赋给变量

  3、注意:

    Java是强类型语言,变量的类型必须与数据的类型一致。

public class TestVariable {
    public static void main(String[] args) {
        
        //声明变量,语法:数据类型变量名;
        int money; //在内存中开辟了一块整数空间

        // 赋值,语法:变量名=值;
        money = 100;//将100赋值给money变量空间
        
        System.out.println(money);//打印变量中的值
        
        System.out.println("money");//打印文本

    }
}

4、变量的定义方式

声明变量的3种方式:

  1、先声明,再赋值:【常用】

    数据类型  变量名;

    变量名=值;

  2、声明并赋值:【常用】

    数据类型变量名 = 值;

  3、多个同类型变量的声明与赋值:【了解】

    数据类型 变量1 ,变量2,变量3 = 值3,变量4,变量5 = 值5;

        //声明并赋值
        int age = 10;//将声明的语法与赋值的语法合二为一
        System.out.println(age);
        
        
        //同时声明多个同类型变量
        int a, b, c, d = 44, e = 55;
        
        a = 11;
        b = 22;
        c = 33;
        
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);

5、数据类型

  Java中的变量具有严格的数据类型区分。(强类型语言)

  在Java语言中,任何一个值,都有其对应类型的变量。

 5.1、基本数据类型(整数)

  注意: int为整数的默认类型,如需为long类型赋值较大整数时,需在值的后面追加“L”

 

        //数据类型变量名=值;
        byte b = 127;// -128~127(共计256个整数)
        System.out.println(b);
        
        short s = 32767;//-32768~ 32767(共计65536个整数)
        System.out.println(s);
        
        int i = 2147483647;//-2147483648~ 2147483647(共计42亿多个整数)
        System.out.println(i);
        
        //Java中所有的“整数字面值"的默认类型是int,当整数字面值超过int的取值范围时,则提醒"”过大的整数"
        long l1 = 2147483648L;//显示告知JVM,此值为long类型
        long l2 = 9223372036854775807L;//-9223372036854775808L~9223372036854775807L
        System.out.println(l1);
        System.out.println(l2);

5.2、基本数据类型(小数)

 

浮点型数值采用科学计数法表示:

2E3 等价于2_* 10^3(结果:2000.0)

3E5 等价于3 *10^5(结果:300000.0)

        // float单精度浮点型、double双精度浮点型
        double d = 1.2;
        System.out.println(d);

        double d2 = 1;
        System.out.println(d2);

        float f = 1.5F;//任何"小数字面值"默认类型都是double,如果要存储到float变量中,需显示追加"F1
        System.out.println(f);


        //科学计数法
        double d3 = 2E3;//2*10^ 3
        System.out.println(d3);

        double d4 = 2E7;//2*10^ 7 20000000.0
        System.out.println(d4);

        float f2 = 5E4F; //5*10^4追加F代表float
        System.out.println(f2);


        //取值范围的差异
        // foat正数取值范围:0.00o00000.00003000000000000000000014F~34000000000000000000000000000000000000.0F
        float floatMin = 0.0000000000000000000000000000000000000000000014F; //float的最小正数
        float floatMax = 340000000000000000000000000000000000000.0F; //float的最大正数
        System.out.println(floatMin);
        System.out.println(floatMax);

        // fioat负数取值范围:-34005000300030000000000.,0F~-0.000000000000000000000000000000000000000000014F
        float floatMin2 = -340000000000000000000000000000000000000.0F;//个十百千万亿兆京垓。。。。。那由他
        float floatMax2 = -0.0000000000000000000000000000000000000000000014F;
        System.out.println(floatMin2);
        System.out.println(floatMax2);

        // double正数取值范围:
        double doubleMin = 4.9E-324;
        double doubleMax = 1.7E308;
        System.out.println(doubleMin);
        System.out.println(doubleMax);

5.3、基本数据类型(布尔)

可直接赋值 true / false

也可赋值一个结果为true / false的表达式

注意:Java中的boolean不能参与算数运算

        boolean b1 = false; // true  false
        System.out.println(b1);
        boolean b2 = 5 > 4;
        System.out.println(b2);

5.4、基本数据类型(字符)

ASCII(American Standard Code for Information Interchange)美国信息交换标准代码。

基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

ASCII是最通用的信息交换标准,为英文字符设定了统一并且唯一的二进制编码。

 Unicode(万国码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,(其中包含了ASCII编码)。

 

 

 

Unicode中每个字符都对应一个二进制整数,可以使用多种方式赋值。

  字符赋值: char c1 = 'A'; (通过 ' ' 描述为字符赋值)

  整数赋值: char c2= 65; (通过十进制数65在字符集中对应的字符赋值)

  进制赋值: char c3 = '\u0041’; (通过十六进制数41在字符集中所对应的字符赋值)

        char c1 = 'A'; //字符赋值,原生、基本的赋值方式(常用)
        System.out.println(c1);
        char c2 = 65; //整数赋值(十进制)
        System.out.println(c2);
        char c3 = '\u0041'; //进制赋值(十六进制)
        System.out.println(c3);

6、转义字符

如果需要在程序中输出一个单引号字符,该如何完成?

 

为了解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号。

        char ch = '\'';
        System.out.println(ch);
        System.out.println("\"");
        System.out.println("Hello\tWorld");
        System.out.println("Hello\nWorld");
        System.out.println("\\");

7、引用数据类型(字符串)

String类型的字面取值:

  String strl =“你好";

  String str2 = "Hello";

  String str3 = "分布式架构师"; 

  String str4 = "Java Engineer";

8、自动类型转换

两种类型相互兼容。

目标类型大于源类型。

        //整数–整数
        short s = 123;
        int i = s;//将源类型值存入到目标类型变量中(自动类型转换)System.out.println(i);

        byte b = 100;
        short s2 = b;//自动类型转换System.out.println(s2);

        //小数-小数
        float f = 100.0F;
        double d = f;
        System.out.println(d);

        //小数–整数
        int i2 = 100;
        double d2 = i2;
        System.out.println(d2);

        //字符–整数
        char c = 'A';
        int i3 = c;
        System.out.println(i3);

        //字符-小数
        char c2 = 'a';
        double d3 = c2;
        System.out.println(d3);

        //boolean无法与其他类型进行转换
        boolean bool = true;    //true | flaseint
//        int i4 = bool;//不兼容的类型

9、强制类型转换

两种类型相互兼容。

目标类型小于源类型。

(1)整数长度足够,数据完整。

  例: int i = 100;  byte b = (byte)i;   // b = 100 

(2)整数长度不够,数据截断。

  例: int i = 10000;  byte b = (byte)i ;  // b = 16(符号位变化,可能变为负数)

(3)小数强转整数,数据截断。
  例: double d = 2.5;  int i = (int)d;  // i = 2(小数位舍掉)

(4)字符整数互转,数据完整。

  例: char c = 65;  int i = c;  // i = 65

(5)boolean的取值为true/false,不可与其他类型转换。

        //长度足够,数据完整
        short s = 123;
        byte b = (byte) s;//强制类型转换(数据完整)
        System.out.println(b);

        //长度不够,数据截断
        short s2 = 257;
        byte b2 = (byte) s2;//强制类型转换(数据截断)
        System.out.println(b2);

        short s3 = 130;
        byte b3 = (byte) s3;
        System.out.println(b3);

        //小数强转整数
        double d = 2.999;
        int i = (int) d;
        System.out.println(i);

        //字符强转整数
        char c = 'A';
        int i2 = c; //自动类型转换
        System.out.println(i2);

        char c2 = (char) i2;//强制类型转换
        System.out.println(c2);

        //字符与整数转换的注意事项
        short s4 = -1;// -32768~32767
        char c3 = (char)s4;//强制类型转换
        System.out.println(c3);

10、运算符

10.1、算数运算符

        int a = 10;
        int b = 3;
        System.out.println(a / b);//求商=3
        System.out.println(a % b);//求余=1

        double d = 10.0;
        int c = 3;
        System.out.println(d / c);//求商3.33.......

        int num1 = 10;
        num1++;//自增1
        System.out.println(num1);

        int num2 = 10;
        num2--;//自减1
        System.out.println(num2);
        
        //前++:先++,再打印自增后的值
        //后++︰先打印当前值,再++
        int num3 = 5;
        System.out.println(++num3);
        System.out.println(num3);
       
        //前++︰先++,再赋值
        //后++︰先赋值,再++
        int num4 = 100;
        int num5 = num4++;
        System.out.println(num5);
        System.out.println(num4);

10.2、赋值运算符

 

        int a = 10;//赋值运算符
        a+= 5;//在a基础上+5a = a + 5;
        System.out.println(a);

        int b = 20;
        b-= 3;// b = b - 3;
        System.out.println(b);

        int c = 30;
        c %= 4;// c = c % 4;
        System.out.println(c);

10.3、关系运算符

        int a = 10;
        int b = 6;
        System.out.println(a > b);
        System.out.println(a < b);
        
        System.out.println(a >= b);
        System.out.println(a <= b);
        
        System.out.println(a == b);
        System.out.println(a != b);

10.4、逻辑运算符

        int javaScore = 100;
        int webScore = 99;//比较两者是否相等
        System.out.println(javaScore == webScore);

        //别分判断二者是否为满分
        System.out.println(javaScore == 100);
        System.out.println(webScore == 100);

        //一次性判断二者是否均为满分
        // false
        //true &&false 两个表达式同时为真
        System.out.println(javaScore == 100 && webScore == 100);

        //一次性判断二者是是否有一个满分
        // true
        //true || false
        System.out.println(javaScore == 100 || webScore == 100);

        boolean result = javaScore == 100;
        //Java的成绩是满分吗?
        System.out.println(result);//true
        //Java的成绩不是满分吗?
        System.out.println(!result);//false

10.4、三元运算符

        //1.判断
        //2.赋值
        //布尔表达式 ? 值1:值2
        int javaScore = 100;
        String result = javaScore == 100 ? "恭喜" : "加油";
        System.out.println(result);

        int webScore = 99;
        int result2 = webScore == 100 ? 666 : 111;
        System.out.println(result2);

11、表达式

 

12、自动类型提升

进行算数运算时:

  两个操作数有一个为double,计算结果提升为double。

  如果操作数中没有double,有一个为float,计算结果提升为floato。

  如果操作数中没有float,有一个为long,计算结果提升为longo

  如果操作数中没有long,有一个为int,计算结果提升为int。

  如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。

  特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String

        double d1 = 10.0;
        int i1 = 5;
        double d2 = d1 + i1;
        System.out.println(d2);

        float f1 = 5.0F;
        short s1 = 20;
        float f2 = f1 + s1;
        System.out.println(f2);

        long l1 = 100;
        byte b1 = 50;
        long l2 = l1 + b1;
        System.out.println(12);

        int i3 = 123;
        short s3 = 456;
        int i4 = i3 + s3;
        System.out.println(i4);

        short s4 = 321;
        byte b3 = 111;
        int s5 = s4 + b3;
        System.out.println(s5);


        //特殊: String的字符串拼接
        String str = "Hello";
        int i5 = 123;
        String str2 = str + i5;
        System.out.println(str2);

        int javaScore = 100;
        System.out.println( "Java的成绩是:"+javaScore );

13、控制台

程序运行中,可在控制台((终端)手动录入数据,再让程序继续运行。

导包语法: import包名.类名;//将外部class文件的功能引入到自身文件中。

使用顺序:

  (1)导入java.util.Scanner。

  (2)声明Scanner 类型的变量。

  (3)使用Scanner类中对应的方法(区分类型):

    nextInt() ;//获得整数

    nextDouble();//获得小数

    next() ;//获得字符串

    next().charAt(O);//获得单个字符

    注:如果输入了不匹配的数据,则会产生java.util.InputMismatchException

///package 必须在源文件的首行
package com.huiruan;

import java.util.Scanner; //1.引入外部文件

public class TestScanner {
    public static void main(String[] args) {
        //2.声明Scanner类型的变量
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数");
        //3.使用
        int i = scanner.nextInt();//控制台获取一个整数
        System.out.println("您输入的值为: " + i);


        Scanner input = new Scanner(System.in);
        System.out.println("请输入值:");
        int i1 = input.nextInt();//接收整数
        double d = input.nextDouble();
        //接收小数
        String s = input.next();//接收字符串
        char c = input.next().charAt(0);//接收字符(接收一个完整的字符串,获取其中的第一个字符)│
        System.out.println("整数:" + i1);
        System.out.println("小数:" + d);
        System.out.println("字符串:" + s);

    }
}

14、总结

(1) 变量:

  计算机内存中的一块存储空间,是存储数据的基本单元。

(2)数据类型:

  基本数据类型(8种)、引用数据类型(String、数组、对象)。

(3)运算符:

  算数运算符、赋值运算符、关系运算符、逻辑运算符。

(4)类型转换:

  自动类型转换、强制类型转换。

(5)类型提升:

  数字间的常规类型提升,字符串的特殊类型提升。

(6)控制台录入:

  引入工具包、声明Scanner、调用对应方法接收控制台录入数据。

 

posted @ 2021-06-23 00:45  菜鸟的道路  阅读(130)  评论(0)    收藏  举报