day01java_环境变量,HelloWorld,变量,常量

今日重点:

1.配置java的环境变量
2.知道jdk和jre以及jvm的关系
3.常见的dos命令
4.知道开发三步骤
5.编写java的入门程序
6.会使用注释对代码进行解释说明
7.知道java入门程序中的每一句话代表的啥
8.知道java入门程序的注意事项
9.掌握java中的常量

第一章 Java概述

1.1 JavaSE课程体系介绍

JavaSE知识模块介绍

  • 第一部分:计算机编程语言核心结构:数据类型运算符流程控制数组、… (固定格式,没有为什么,把格式练会)
  • 第二部分:Java面向对象核心逻辑:类和对象封装继承多态抽象接口、…
    ​ 为什么要找对象:调用了对象的功能,来替我们完成一些自己不好完成的事儿
  • 第三部分:JavaSE核心高级应用:集合I/O多线程网络编程反射机制、…
  • 第四部分:Java新特性:Lambda表达式函数式编程新Date/Time API接口的默认、静态和私有方法、…
  • 第五部分:MySQL/JDBC核心技术:SQL语句数据库连接池DBUtils事务管理批处理、…

1.2 计算机语言介绍(了解)

什么是计算机编程语言?

所谓计算机编程语言,就是人们使用编程语言对计算机下达的命令,让计算机完成人们需要的功能。

计算机语言发展

  • 第一代:机器语言(计算机很庞大,都是0和1组成的指令,而且需要同时按下多个键才能完成一个指令,而且用0和1组成的一个一个指令,所以工程师们就要记住0和1的各种组合以及对应的指令)

  • 第二代:汇编语言(面向机器的语言,因为直接面对机器需要记一些 0 和1 的指令,很痛苦,所以就出现了很多助记词,比如:add.汇编语言现在还在使用,接近于机器语言,越接近机器语言,速度越快,而且最终还是转成0和1存储)

  • 第三代:高级语言(更接近我们人类语言,常见的有很多,比如C语言,java等)

    不管是什么语言,最终都要向机器语言靠拢,因为CPU只认识01
    

1.3 Java语言概述(了解)

Java生态圈

Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
作为一个平台,Java虚拟机扮演着举足轻重的作用。除了 Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、 JRuby、Kotlin等都是Java平台的一部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。而且Java还可以跨平台
作为一种文化,Java几乎成为了 “开源”的代名词。在Java程序中,有着数不清的开源软件和框架。如Tomcat、Struts, Hibernate, Spring,MyBatis等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。

作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。其实这才是Java最大的优势和财富。

Java 是最好的语言吗?

不是,因为在每个领域都有更合适的编程语言。

  • C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C里面有一个编译器,会将系统软件变成机器语言,让硬件识别,和硬件做交互.C++ 是面向对象的 C 语言,一直在不断的改进。

  • JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。

  • Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。现在Python也被用于web开发、科学计算和统计、人工智能、网络爬虫等

  • Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。

  • Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。

  • Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

  • 编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/Objective-C。

  • R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法

  • SQL 是用于访问和处理数据库的标准的计算机语言, 这类数据库包括:MySQL,Oracle, Sybase, SQL Server, DB2, Access 等等

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

Java语言发展历史

Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。

Java之父是詹姆斯.高斯林(James Gosling)。

在这里插入图片描述
詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

1996年发布JDK1.0版。

目前最新的版本是Java17。我们学习的Java8。

发行版本发行时间备注
Java1995.05.23Sun公司在Sun world会议上正式发布Java和HotJava浏览器
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19
Java 1.21998.12.08拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08
Java1.42004.02.06
Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司
Java 7.02011.07.02
Java 8.02014.03.18
Java 9.02017.09.22①每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.02018.03.21
Java 11.02018.09.25JDK安装包取消独立JRE安装包,长期支持版本
Java 12.02019.03.19
Java 13.02019.9.18
Java 14.02020.3.17
GoogleOracle的侵权事件:

GoogleOracle 纠缠多年的“Java 侵权案”又有了新的判决结果。Google 在此次对决中败诉,并可能需要支付高达88亿美元的赔偿金。这个案件还引发关于 API(应用程序编程接口)是否应该受版权保护的争议。

其实早在20108月,Oracle 就已经向法院起诉 Google 侵权,声称 Google 在开发 Android 平台时未经授权就使用了 OracleJava 应用编程接口数据包。

另外,虽然 Google 当年为避免版权问题而重写了 Java API,却意外地使用了和 Oracle JDK 相同的一小段代码,这使得 Google 陷入不利的局面。

正是由于 GoogleAndroid 平台上使用 Java 时并未和 Sun 公司达成授权协议,造成了巨大的隐患,尤其是在 Oracle 收购 Sun 公司之后。

在这里插入图片描述

Java技术体系平台

  • JavaSE(Java Platform, Standard Edition标准版):允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
  • JavaEE(Java Platform, Enterprise Edition企业版):是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。
  • JavaME(Java Platform, Micro Edition 小型版):为互联网上的嵌入式和移动设备上运行的应用提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(PDA)、电视机顶盒、打印机等等。JavaME包括灵活的用户界面、健壮的安全性、内置的网络协议,以及支持动态下载的网络和离线应用程序。基于JavaME的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。

第二章.Java语言前言

1.Java的介绍

1.计算机编程语言:计算机能看懂的语言,我们能使用计算机编程语言对计算进下达指令
2.java之父:詹姆斯高斯林
3.java涉及到的领域:主要用于互联网领域,开发应用程序
  a.各行各业的操作系统,网站
  b.移动端:医疗设备上,超市打印小票机器,鸿蒙,安卓等
  c.电商网站
  d.物流管理
  e.银行使用的操作系统等
  f.桌面应用(idea)
  g.企业级开发(服务器程序)
  h.科学计算:机器人
  i.大数据库开发:hadoop
  j.游戏开发 
4.目前安装的jdk版本:jdk8   

2.字节

1.计算机中最基本的存储单元,叫做字节,byte或者B
2.8个二进制位(bit) 等于 一个字节
3.存储单元的计算规则:
  8bit = 1B
  1024B = 1KB
  1024KB = 1MB
  1024MB = 1GB
  1024GB = 1TB    

在这里插入图片描述

3.常用的dos命令

1.打开dos命令窗口
  win+r -> 输入cmd -> 回车

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

作用命令
切换盘符盘符名: -> 回车 -> 盘符名不区分大小写 ,但是我们得有这个盘
查看当前目录下得内容dir
进入到指定的目录cd 文件夹名
进入到多级目录cd 文件夹名\文件夹名
退到上一级目录cd… 或者cd …
退到磁盘位置cd\或者cd \
清屏cls
关闭dos命令窗口exit
创建文件夹mkdir 文件夹名
创建多级文件夹mkdir 文件夹名\文件夹名
删除文件夹rd 文件夹名(被删除的文件夹必须是空的,而且不走回收站)
删除文件del 文件名.后缀名
批量删除指定类型的文件del *.后缀名

dos命令小技巧

1.指定文件或者文件夹,可以用tab键自动补全

2.按上下箭头可以切换之前打过的命令

3.快速打开到指令目录对应的dos命令窗口

a.在本地上选中路径,输入cmd

第三章.Java所需要的环境

1.jvm和跨平台

1.jvm:java虚拟机,是运行所有java程序的假想计算机,是java程序的运行环境之一,我们编写的java代码,都必须运行在jvm之上
    
2.跨平台:一个java代码可以在不同的操作系统上运行
  跨:跨越
  平台:操作系统
      
3.jvm和跨平台的关系:
  一个java程序想要去不同的操作系统上运行实现跨平台,我们需要安装不同版本的jvm

在这里插入图片描述

2.JDK和JRE

1.JRE(Java Runtime Environment):java程序运行时所需要的环境,包含"jvm"和运行时所需要的"核心类库"
2.JDK(Java Development Kit):是java程序开发工具包,包含'JRE'和开发人员使用的工具(javadoc)\
    
3.注意:
  由于jdk包含了jre,jre又包含了jvm
  所以我们只需要安装一个jdk即可

jdk包含jre

jre包含jvm

2.1.jdk安装

1.下载:www.oracle.com

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

jdk的安装:

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

测试:进入到jdk安装目录的bin路径下

​ 找两个命令: javac.exe java.exe

​ 然后进入到对应位置的dos命令窗口:输入 javac 和java 命令

javac:编译

java:运行

2.2.环境变量的配置

1.配置环境变量的目的:在任意路径下随意使用javac和java命令    

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

配置环境变量的方式:
  1.直接将jdk安装路径的bin路径放到path路径下(不推荐)
  2.JAVA_HOME(最推荐)

在这里插入图片描述

第四章.Java第一个程序的开发

1.开发三步骤

1.编写:创建一个xxx.java文件
  a.注意:需要将文件后缀名设置成显示
  
2.编译:javac -> 生成一个class文件(字节码文件),jvm运行java程序,只认识class文件
  javac java文件名.java
  比如: javac Demo01HelloWorld.java  
      
3.运行:java
  java class文件名 -> 不要带后缀,不要带后缀,不要带后缀    
  比如: java Demo01HelloWorld  

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

2.编写HelloWorld

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

在这里插入图片描述

3.注释

1.注释:对代码的解释说明,不参与编译和运行
2.分类:
  a.单行注释: //注释内容
  b.多行注释:
    /*
      注释内容
    */
  c.文档注释:
    /**
      注释内容
    */
//单行注释  定义一个类,类名叫做Demo01HelloWorld
public class Demo01HelloWorld{
	/*
	  叫做main方法,是程序的入口
	*/
	public static void main(String[] args){
		
		//输出语句
		System.out.println("HelloWorld");
	}
}	

文档注释:

文档注释: 可以使用javadoc命令生成此类相关的一个API文档,让别人快速了解此类的作用以及其中的成员
  /**
    注释内容
  */
    
 命令:javadoc -d 要生成的文件夹名字 -author -version 文件名.java   
/**
  这是一个Java入门程序
  @author  涛哥
  @version v1.0
*/
public class Demo02HelloWorld{
    /**
	  main方法的作用为程序的入口
	*/
	public static void main(String[] args){
		//输出语句
		System.out.println("HelloWorld");
	}
}	

在这里插入图片描述

4.第一个Java程序中每一句话的解释以及注意事项

/*
  public class Demo03HelloWorld
   public:权限修饰符,代表公共的(面向对象时说)		
   class:代表的是类
   Demo03HelloWorld:类名,要求和java文件名保持一致
   
   
  在定义一个类:类是java程序最基本的组成单元
               所有的代码都要在class类中写
*/
public class Demo03HelloWorld{
  
    /*
	  public static void main(String[] args)
	    public :权限修饰符,代表公共的(面向对象时说)
        static:静态关键字(面向对象时说)	
        void:代表方法无返回值(讲方法的时候说)
        main:方法名
   		(String[] args):main方法的参数,参数类型为String数组,参数名为args(后面说)
		
		main方法是java程序的入口,jvm执行java程序从main方法开始执行  mian
	 
	*/
	public static void main(String[] args){
		//输出语句(打印语句),可以将我们的结果输出到控制台上
		System.out.println("HelloWorld");
	}
}	
1.不要将main写成mian,不然jvm找不到程序的入口了
2.代码中的所有标点符号必须是英文状态的
3.写括号要成对的写
4.代码写完之后,;表示这一句写完了
5.System和String中的首字母s要大写
6.class后面跟的类名要和java文件名保持一致    

6.关键字

1.概述:java提前定义好的具有特殊含义的小写单词
2.怎么记:
  关键字在高级记事本中颜色特殊,我们学到哪里记到哪里

在这里插入图片描述

7.编写HelloWorld时要注意的问题

7.1字符编码问题

1.当cmd命令行窗口的字符编码与.java源文件中的字符编码不一致时,就会在dos命令窗口中出现乱码,原因是啥?
    
  写代码的时候,编码为:UTF-8
  dos命令窗口默认字符集: GBK
      
  a.如果是英文,在这两个编码中(UTF-8GBK)一个字符就占一个字节
  b.如果是中文,同样的中文内容在这两个编码中所占字节数不一样
    UTF-8:一个中文占3个字节
    GBK:一个中文占2个字节

在这里插入图片描述

解决方案一:

在Notepad++等编辑器中,修改源文件的字符编码

在这里插入图片描述

解决方案二:

  • 在使用javac命令式,可以指定源文件的字符编码
    • javac -encoding utf-8 Review01.java

7.2源文件名(java文件名)与类名一致问题?

1.源文件名是否必须与类名一致
  a.如果class前面没有public,此时类名可以和java文件名不一致
  b.如果class前面有public,此时类名必须和java文件名保持一致
    
2.一个源文件中是否可以有多个类?public呢?
  a.一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
  b.但是一个源文件只能有一个public的类。
  
3.main方法必须在public的类在中嘛?
  不是
  但是后面main方法都要写在public的类中

1.不管class是否为public的,我们的类名都建议和java文件名保持一致

2.我们尽量在一个java文件中定义一个class类

3.main方法全部放到public的类中

9.println和print区别

相同点:
  两个都是原样输出,可以将结果直接打印到控制台上
不同点:
  println:原样输出,自动换行
  print:原样输出,不会换行

小技巧:

1.复制当前行: ctrl+d

2.一次写多行:

​ 按住alt不放,鼠标往下拉,让光标变长

第五章.常量

  • 常量概念:在程序执行的过程中,其值不可以发生改变的量。

  • 常量的分类:

    • 自定义常量:通过final关键字定义(后面在面向对象部分讲解)

    • 字面值常量、字面量(literal):字面值就是数据

        整数常量:所有的整数,包括正负 -1 1 
        小数常量:所有带小数点的 2.5  2.0
        字符常量:带单引号的 ''  单引号中必须有,且只能有一个内容
                '1''11'  不对
                '1a'  不对
                ' ''  '  不对
                'tab键' 对
        字符串常量:带双引号 "" 双引号中的内容随意
        布尔常量:true false -> 用于判断条件
        空常量:null -> 代表数据不存在->不能直接使用
      
public class Demo06HelloWorld{
	public static void main(String[] args){
		//整数常量
		System.out.println(1);
		System.out.println(-1);
		
		//小数常量
		System.out.println(2.5);
		System.out.println(2.0);
		
		//字符常量
		System.out.println('1');
		//System.out.println('11');''中必须有且只能有一个内容 11算两个内容
		//System.out.println('');''中必须有且只能有一个内容
		System.out.println(' ');//一个空格算一个内容
		//System.out.println('  ');//一个空格算一个内容,两个空格就是两个内容
		System.out.println('	');//tab键算一个内容
		
		//字符串常量
		System.out.println("张无忌和赵敏以及周芷若还有小昭以及朱九真...没羞没臊的故事");
		System.out.println("");
		//布尔常量
		System.out.println(true);
		System.out.println(false);
		
		//空常量
		//System.out.println(null); null代表数据不存在,不能直接引用
	}
}
public class Demo07HelloWorld{
	public static void main(String[] args){
		System.out.println(10+3);//13
		System.out.println(10-3);//7
		System.out.println(10*3);//30
		System.out.println(10/3);//3  如果/前后都是整数,取的整数部分
		System.out.println(10/3.0);// 如果/前后有一个是小数,结果就是带小数点的
	}
}

在这里插入图片描述

第六章.变量

1.概述:在代码的运行过程中,值可以根据不同的情况随时发生改变的数据
       int price = 10;
           price = 8;
2.作用:可以临时存储一个数据
3.java中变量的分类:
  基本数据类型:48种
      a.整型:byte short int long
      b.浮点型:float double
      c.字符型:char
      d.布尔型:boolean
          
  引用数据类型:
      类 数组 接口 枚举 注解
          
4.整数默认类型为int
  小数默认类型为double
          
5.按照取值范围从小到大做排序:
  byte short char -> int -> long -> float -> double
      
6.特殊的类型:字符串类型
  用String表示,但是String不属于基本类型,属于一个类,所以属于引用数据类型
  只不过String变量的定义格式和基本类型一样
数据类型关键字内存占用取值范围
字节型byte1个字节-128 至 127 定义byte变量时超出范围,废了
短整型short2个字节-32768 至 32767
整型int(默认)4个字节-231 至 231-1 正负21个亿
-2147483648—2147483647
长整型long8个字节-263 至 263-1 19位数字
单精度浮点数float4个字节1.4013E-45 至 3.4028E+38
双精度浮点数double(默认)8个字节4.9E-324 至 1.7977E+308
字符型char2个字节0 至 216-1
布尔类型boolean1个字节true,false(可以做判断条件使用)
public class Demo08Var{
	public static void main(String[] args){
		//byte
		byte num1 = 100;
		num1 = 101;
		//num1 = 200;超出了byte的取值范围了
		System.out.println(num1);
		
		//short
		short num2 = 100;
		System.out.println(num2);
		
		//int 整数默认类型
		int num3 = 100000000;
		System.out.println(num3);
		
		/*
		  long 定义long型的变量,习惯上再值得后面加上L或者l
		  建议用L
		*/
		long num4 = 100000000L;
		System.out.println(num4);
		
		/*
		  float 定义float型的变量,请在小数后面加F或者f
		  建议用F
		*/
		float num5 = 2.5F;
		System.out.println(num5);
		
		/*
		  double
		*/
		double num6 = 2.5;
		System.out.println(num6);
		
		/*
		  char 代表字符变量
		*/
		char num7 = '中';
		System.out.println(num7);
		
		/*
		  boolean
		  true false
		*/
		
		boolean num8 = true;
		boolean num9 = false;
		System.out.println(num8);
		System.out.println(num9);
		
		/*
		  num9代表的是false
		  相当于将num9的false赋值给了变量num8,此时num8的true被覆盖了,变成了num9的false了
		*/
	    num8 = num9;
		System.out.println(num8);
		
		/*
		  String 字符串
		*/
		String s = "atguigu";
		s = "taoge";
		System.out.println(s);
	}
}
注意:

int i = 10

正确的念法:将等号右边的10赋值给等号左边的变量i

一定是先看等号右边的,如果等号右边是运算的,我们都需要将等号右边的值计算出来,然后再赋值给等号左边的变量

  • 23
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值