Java Day1

Java

day1——2023.8.4

什么是编程?

人类将自我想法和思路整理出来,以编程语言的形式告诉计算机,让计算机帮助人类完成相应的任务。
编程需要依靠编程语言去完成。

编程语言发展史

第一阶段:二进制语言,只有计算机能读懂,举例:010101
第二阶段:汇编语言,计算机能看懂,人类也能看懂,举例:0x15
第三阶段:编程语言,人类能读懂,计算机也能懂,举例:C,Java

Java发展史

  • 1991年:Java的诞生。詹姆斯·高斯林和他的团队在Sun Microsystems(现在是Oracle Corporation的一部分)开始开发Java语言项目,最初命名为Oak,目标是为家用电器制造商开发智能家居解决方案。后来,该项目重新定位为开发Web浏览器上的动态内容。首次公开亮相是在1995年的SunWorld会议上。

  • 1995年:正式发布Java 1.0。Java 1.0的发布标志着Java作为一种独立的编程语言的诞生。Java 1.0具有基本的语言特性、类库和工具,引起了广泛的关注和采用。

  • 1997年:发布Java 1.1。Java 1.1增加了许多新特性和改进,包括内部类、反射、JAR文件格式等。这个版本在企业开发中得到了广泛应用。

  • 1998年:发布Java1.2

    J2EE:分布式开发(网络电子商务)

    J2SE:嵌入式开发(手机等小型电子设备的软件)

    J2ME:桌面应用软件(单机软件)

  • 2000年:发布Java 1.3、Java 1.4。这些版本引入了许多新的特性和改进,包括Java虚拟机的性能提升、Swing用户界面库、Java平台的国际化和特定领域的API等。

  • 2004年:发布Java 5(又称Java 1.5或Java 5.0)。Java 5引入了重要的语言和库特性,如泛型、自动装箱和拆箱、枚举类型、注解等。这些特性增强了Java的表达能力和可靠性。

  • 2006年:发布Java 6(又称Java 1.6)。Java 6引入了很多新特性,包括脚本语言支持、JDBC 4.0、并发编程库的增强等。

  • 2011年:发布Java 7。Java 7的特性包括钻石操作符、字符串开关、NIO 2、更好的异常处理、并发库的改进等。

  • 2014年:发布Java 8。Java 8引入了重要的特性,如Lambda表达式、Stream API、新的日期和时间API等。这些特性使得Java在函数式编程和并行处理方面有了更好的支持。

  • 2017年:发布Java 9。Java 9引入了模块化系统(Project Jigsaw)、改进的JShell交互式编程环境、新的HTTP/2客户端等。

  • 2018年:发布Java 10和Java 11。这些版本引入了一些小的语言和库特性改进,以及性能提升和安全增强。

  • 从9版本开始每隔6个月更新一次。

JDK环境配置

环境

想要使用某些软件,必须要给软件配置环境
配置了环境后,在计算机中可以在任意位置去启动想要使用的软件

安装JDK配置环境

1.点击我的电脑,属性
2.
在这里插入图片描述
3.
在这里插入图片描述

二进制

在这里插入图片描述

计算机的存储单位

最小单位:1位表示一个1或者一个0

1个字节 8位 1111,1111——>255

1KB1024B
1MB1024KB
1GB1024MB
1TB1024GB

命令提示符

查看网络:ping

查看计算机相关信息:ipconfig/all

切换盘符:盘名:

切换目录:cd 目录名称

启动软件:输入应用名称

JDK,JRE,JVM(三大任务)

在这里插入图片描述
JDK:Java Developer Kit(Java开发工具包),提供给所有Java开发人员使用的工具包,如果要开发Java程序,必须要安装JDK

JRE:Java Runtime Environment(Java运行时环境),运行Java程序需要的内容,将来如果只要运行一个Java程序,只要有JRE就可以了

JVM:Java Virtual Machine(Java虚拟机),所有的Java代码都是由Java虚拟机(JVM)帮助我们运行的

JDK包含JRE,JRE包含JVM

Java的跨平台

平台

不同的操作系统

跨平台

同一个Java程序,可以在不同的操作系统上运行

跨平台实现原理

通过不同操作系统的JVM,完成跨平台的操作
在这里插入图片描述

JVM三大任务

​ 1.加载:JVM负责把字节码文件(.class)加载到内存中

​ 2.验证:JVM对字节码文件进行验证,验证代码是否符合规范

​ 3.执行:验证通过后,将代码执行出来

Java的HelloWorld(记事本.手动编译)

public class HelloWorld{
   public static void main(String[] args){
      System.out.println("HelloWorld!!");
   }
}
1.public class HelloWorld{}

public:一个修饰符,公共的意思,表示任意位置都可以访问这个类

class:类的意思,表示这个java文件是一个普通的类文件

HelloWorld:类的名称,用来标识这个类的,类名一般用大写开头

大括号:这个类中代码的范围

2.public static void main(String[] args){}

main方法:固定写法(psvm),是程序的入口,所有的程序启动都是从这个main方法开始

3.System.out.println(“HelloWorld!!”);

向控制台输出指定的内容,括号里面写什么,就会输出什么

写入汉字的时候编译报错的问题:

在这里插入图片描述
格式编译报错,需要修改文件的编码格式
在这里插入图片描述
修改完之后,重新编译
在这里插入图片描述

Java常用命令:java javac

javac

用来编译指定的.java文件

java

用来运行编译好的类文件

Java中的注释

注释

对于代码的解释,写给自己或者其他人看的

单行注释

注释一行内容,以//开头

多行注释

注释多行内容,一般做一些说明性的注释,写在/* */的范围内

public class HelloWorld{
    /*
               这是这个HelloWorld的main方法
               这个HelloWorld类,从main方法开始运行
    */
   public static void main(String[] args){
       //输出HelloWorld这个字符串
      System.out.println("HelloWorld!!");
   }
}

数据类型&变量

变量
取名规则

遵循标识符的命名规范

标识符

Java中,类,方法,变量取名的一些规范名称

规范
标识符

数字,字母,下划线,$组成,不能以数字开头,不能和关键字同名

举例:123abc(x)abc,abc_123,$abc(√)

变量名

遵循标识符的命名规范的基础上,一般采用小驼峰式命名,首字母小写,后面的每个单词的首字母大写,尽量遵循望文生义

举例:useName,productName,productId

类名

遵循标识符的命名规范的基础上,采用 大驼峰式 的命名,首字母大写,后面的每个单词的首字母大写

举例 : class User{} class Person{} class Product{}

方法名

遵循标识符的命名规范的基础上,一般采用 小驼峰式 命名,首字母小写,后面的每个单词的首字母大写尽量要遵循 望文生义

举例 : void getUserName(){}

练习

5个变量名:图书编号(bookId),图书名(bookName),图书作者(bookAuthor),图书出版社(bookPublisher),图书价格(bookPrice)

5个类名:书籍类(class Book),作者类(class Author),用户类(class User),出版社类(class Publisher),借阅类(class Borrower)

5个方法名:获取作者名(getAuthorName),添加书籍(insertBookName),修改书籍(alterBookName),获取用户信息(getUserMessage),删除用户信息(deleteUserMessage)

Java关键字

标识符的名称,不能和关键字同名

Java对大小写敏感,关键字大写是允许作为标识符名的

比如Public Class
在这里插入图片描述

常量

定义

程序运行过程中,不会改变的量

分类

整数常量,字符串常量,字符常量,小数常量,布尔常量,空常量

public class DemoVariable01{
    public static void main(String[] args){
        //编写常量
        //整数常量
        System.out.println(10);
        System.out.println(-10);
        //字符串常量,写在一对双引号中的内容
        System.out.println("hello");
        System.out.println("123");
        //浮点数常量,也就是小数值
        System.out.println(3.14);
        //字符常量,用单引号引起来的内容
        //单引号中,有且仅有一个字符
        System.out.println('a');
        System.out.println('周');
        //System.out.println('ab');(x)
        //布尔常量    true或者false
        System.out.println(true);
        System.out.println(false);
        //空常量     null
        //System.out.println(null);(空不能直接这么使用)
    }
}

基本数据类型,数据类型的存储空间

数据类型
定义

用来表示Java语言中使用的数据的方式

分类

基本数据类型 和 引用数据类型

​ 基本数据分类(四类八种)

​ 整数类:byte,short,int,long

​ 浮点数类:float,double

​ 字符类:char

​ 布尔类:boolean

float类型:符号位+小数点前的二进制+小数点后位数补齐
在这里插入图片描述
Java中的数据类型,首位都是符号位,所以取值范围都是位数减一后做计算

浮点数类型转二进制(以40.375为例)

​ 1.先求整数部分40的二进制==>0010 1000;

​ 2.求小数部分0.375的二进制,小数部分求二进制的方式是:小数部分乘2,满1取1,不满1取0

​ 0.375*2=0.75 ==>0

​ 0.75*2=1.5 ==>1

​ 0.5*2=1 ==>1

​ 所以0.375的二进制结果为:011

​ 3.小数点左移,左移到最高位的1后面

​ 0010 1000.011 ==> 001.0 1000 011

​ 移动的位数+ 127 ==> 5 + 127 = 132 =>

​ 4.计算最终的二进制值

​ 符号位 + 132的二进制(移动后数值的二进制) + 小数点后的二进制 后补0

​ 0 + 1000 0100 + 0 1000 011 0000 0000 0000 0000

5,测试结果

public static void main(String[] args) {
         int i = 0b01000010001000011000000000000000;
        System.out.println(Float.intBitsToFloat(i));
    }
注意事项:

​ 1.整数类型,默认为int类型

​ 2.float类型和int类型的字节相同,位数也相同,但是int的精度更高

​ float类型的划分是1个符号位,8个指数位,23个尾数位,他的精度是23位,int是31位

​ float类型的取值范围更大

​ 3.double类型的划分是1个符号位,11个指数位,52个尾数位,比long类的范围大,精度比long类型低

​ 4.浮点数类型默认是double类型

/*
 变量的声明和使用
 */

public class DemoVariable02 {
    public static void main(String[] args){
        //声明变量
        //声明整数类型
        //语法:   数据类型     变量名     =     值
        byte b1 = 10;
        //byte b2 = 200;     //声明的数值不能超过数据类型的范围
        System.out.println(b1);
        //System.out.println(b2);


        short s1 = 200;
        System.out.println(s1);


        //int类型的声明
        //int b1 = 300;      //不可以声明同名的变量
        b1 = 110;
        System.out.println(b1);
        int i = 100;
        System.out.println(i);


        //long类型
        long l1 = 1000;
        long l2 = 2000;
        System.out.println(l1);
        System.out.println(l2);

        
        //float类型
        float f1 = 3.45F;
        System.out.println(f1);


        //double类型
        double d1 = 2.58;
        System.out.println(d1);


        //字符类型
        char ch = 'A';
        System.out.println(ch);


        //布尔类型
        boolean b2 = true;
        boolean b3 = false;
        System.out.println(b2);
        System.out.println(b3);
    }

}

变量

在程序运行的过程中,可以改变的量,本质上就是内存中开辟的一块空间

变量的声明

语法格式: 数据类型 变量名 = 值;

变量声明的注意事项

​ 1.变量不可以重复定义,也就是变量名不能重复,值可以被改变

​ 2.float类型和long类型变量,后面需要加上后缀,float加f/F,long类型加L

​ 3.byte类型和short类型变量声明的时候,它们的值不能超过它们的范围

​ 4.没有赋值的变量,不能被使用,必须要赋值后才能使用

//声明变量
        int number01;
        number01 = 100;
        System.out.println(number01);//想用变量就必须先赋值

5.变量的使用,不能超过它的作用域

​ 作用域:就是变量生效的范围,也就是它所在的那个大括号的范围

变量的其他声明方式:

​ 方式1:

​ 数据类型 变量1,变量2,变量3;

​ 变量1 = 值; 变量2 = 值; 变量3 = 值;

​ 方式2:

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

//声明多个变量
        int x,y,z;
        x = 100;
        y = 200;
        z = 300;
        int x1 = 100,y1 = 200,z1 = 300;
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(x1);
        System.out.println(y1);
        System.out.println(z1);
练习

题目:声明两个变量a,b,a = 10,b = 20,输出这两个变量,输出内容是:a的值是:xx,b的值是:xx,然后将a和b的值做交换,再分别输出a和b

public class Example1 {
    public static void main(String[] main){
        int a = 10,b = 20;
        int c;
        System.out.println("a的值是" +a);
        System.out.println("b的值是" +b);
        //借助一个中间变量
        c = a;   //先把a赋值给c
        a = b;   //再把b赋值给a
        b = c;   //再把c赋值给b
        System.out.println("a的值是" +a);
        System.out.println("b的值是" +b);
    }
}

在这里插入图片描述

类型转换(大类型&小类型、int&char的转换)

大类型和小类型

大小类型的区分即是他们取值范围的大小

byte short int long float double

大小数据类型的转换

小——>大:隐式的数据类型转换

public class DemoVaribale03 {
    public static void main(String[] args){
        //隐式的数据类型转换,小类型->大类型
        byte b = 100;
        int i = b;
        System.out.println(i);


        //小类型向大类型转换的时候,会产生精度的丢失问题
        float f1 = 2.58F;
        double d1 = f1;
        System.out.println(d1);


        int num = 1234;
        float f2 = num;
        System.out.println(f2);

        //byte类型或者short类型,如果做运算,会被提升类型为int,
        byte b1 = 50;
        byte b2 = 50;
        //byte b3 = b1 + b2;   //不可以实现   byte + byte ->int + int
        //int b3 = b1 + b2;    //可以实现
        byte b3 = (byte)(b1 + b2);   //可以实现
        System.out.println(b3);
    }
}

大——>小:显示的数据类型转换

public class DemoVaribale03 {
   public static void main(String[] args){    
        //显示的数据类型转换,   大——>小
        int num01 = 100;
        //byte num02 = num01;
        byte num02 = (byte)num01;
        System.out.println(num02);
        //大类型的值,转为小类型,需要强制转换
        // 如果超过了小类型的范围,可以转换成功,但是最终的结果会发生变化
        int num03 = 200;
        byte num04 = (byte)num03;
        System.out.println(num04);   //值为-56
        
        
        double num05 = 2.56;
        float f3 = (float)num05;
        System.out.println(f3);
       
       
       int num06 = (int) num05;
        System.out.println(num06);   //取整,留2
       
       
       //字符
        char ch01 = 'a';
        System.out.println(ch01 + 1);   //值为98(ASSCI码)


        float f4 = (float) 2.56;    //通过将double类型2.56强转为float
        float f5 = 2.56f;           //声明的时候直接就是赋值float = 2.56f
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值