1.Java基础之概述-变量常量和运算符

1.Java概述

1.1 是什么

Java起源于Sun公司,1995年诞生,高级语言,2009年被Oracle收购

Java之父:James Gosling

oak:橡树

1.2 发展史

1995年,1.0版本

2004年,1.5版本 --》里程碑版本,增加了很多新特性,比如增强for、泛型、可变参数、枚举、包装类等等;版本命名的改变

2006年,1.6版本 —》

J2SE ----》JavaSE

J2EE ----》JavaEE

J2ME ----》JavaME

2011年,java7

*2014年,java8 ====》里程碑版本,新增了一些实用且重要的特性*

java9、java10 ===》时代的眼泪,一瞬即逝

2019年9月17日:java13

2020年3月17日:java14

2020年9月15日:java15

2021年3月16日:java16

1.3 Java vs C++

  • Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程
  • Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台
  • Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。
  • Java 支持自动垃圾回收,而 C++ 需要手动回收。(C++11 中引入智能指针,使用引用计数法垃圾回收)
  • Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承
  • Java 不支持操作符重载,虽然可以对两个 String 对象支持加法运算,但是这是语言内置支持的操作,不属于操作符重载,而 C++ 可以。
  • Java 内置了线程的支持,而 C++ 需要依靠第三方库。
  • Java 的 goto 是保留字,但是不可用,C++ 可以使用 goto。
  • Java 不支持条件编译,C++ 通过 #ifdef #ifndef 等预处理命令从而实现条件编译

1.4 优势

世界java看中国,中国java看阿里

  1. 就业岗位非常多

  2. Java在众多语言中稳居No.1

    https://www.tiobe.com/tiobe-index/

  3. Java体系很丰富:JavaEE、安卓、大数据 ===》Java基础都要学

  4. Java本身语言方面有一些特点:学起来比C简单一点,尤其是指针;Java垃圾自动回收;跨平台

1.5 能干什么

  1. JavaSE【Java Standard Edition】:针对桌面应用,但是Java不太擅长,C家族更擅长一些

    Java常用的关系型数据库有:mysql、Oracle、PostgreSQL

  2. JavaEE【Java Enterprise Edition】:针对服务器端开发,即企业开发,比如:淘宝、京东等电商网站;携程、途牛等旅游网站;招行,ICBC、ABC等银行网站;选课、宿舍管理等管理系统

  3. JavaME【Java Mobile Edition】:有点像Andriod,嵌入式

  4. 大数据开发:大数据大部分组件源码使用的都是Java语言开发的

2.搭建Java开发环境

2.1 下载并安装

官网下载:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

安装参考:傻瓜式

https://baijiahao.baidu.com/s?id=1630229511923551996&wfr=spider&for=pc

安装的时候:建议非中文、非空格目录

2.2 验证

验证这么几个命令:

  1. java
  2. javac
  3. java -version

2.3 安装目录的解释

在这里插入图片描述

2.4 JDK/JRE/JVM三者关系

在这里插入图片描述

JDK【Java Developmen kit】:java开发工具集,包含JRE+开发人员使用的工具

JRE【Java Runtime Envoriment】:java运行时环境,包含JVM+运行时需要的类库

如果你仅仅是运行java程序,只需要安装JRE即可

JVM【Java Virtual Mechine】:Java虚拟机,是我们java程序运行时假象的计算机【类似VMWare】,是java程序实现跨平台【跨操作系统】的重要支撑。

跨平台:任何软件的运行,都必须在OS之上,所以我们编写的程序之所以可以在任何操作 系统之上运行,就是因为,在不同的操作系统上,提供了不同的JDK【实际上是通过JVM实现的跨平台】。

在这里插入图片描述

2.5 cmd常用命令

切换盘符:盘符: ---->linux没有盘符之说

本盘符下切换路径:cd 文件夹名称 ----》 cd /opt/....

回到上一级:cd .. ----》cd .. cd -:回到上次的目录 cd ~:回到home目录

列出当前目录下的文件或文件夹:dir —》ls -a 简写ll

创建目录:mkdir 目录名称 ----》mkdir 目录 mkdir -p /目录1/目录2

删除目录:rmdir 目录 ----》 rm -rf 多级目录:递归删除,且没有提示

创建文件:touch 文件名

3.HelloWorld

3.1 编写Java程序三步走

  1. 编写源程序:即扩展名为文件名.java -----> 给开发人员看的
  2. 编译【翻译】:即将文件名.java,编译为文件名.class ---->给JVM使用
  3. 运行:即执行文件名.class

3.2 编写Java源代码

  1. 创建一个文本文件HelloJava.txt,修改后缀名为.java

    Tips:若没有扩展名,需要将其显示出来

在这里插入图片描述

  1. 使用记事本或者notepad++打开

  2. 编写代码

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

    注意:①文件名必须是HelloJava,即保证文件名跟类名一致;
    ②每个符号【大括号、小括号】都是成对出现;
    public static void main(String[] args)主方法写法固定;
    System.out.println("HelloJava");该语句就是我们要执行的语句,引号中的内容可以改变

3.3 编译

调出cmd窗口,执行如下命令

javac HelloJava.java

在这里插入图片描述

3.4 运行

cmd窗口中,执行如下命令:

java HelloJava

在这里插入图片描述

注意:执行过程中,不能加文件的扩展名

3.5 HelloWorld说明

3.5.1 编译和运行两码事

  • 编译:这个过程,由javac帮我们检测你的源代码有没有问题,若有问题,则编译不通过。

在这里插入图片描述

  • **运行:**将.class文件交给jvm去执行

3.5.2 关于main方法

  1. main方法是程序的入口,跟c中的一样
  2. main方法四要素固定:publicstaticvoidString[] args,args的名称可以改,一般我们不该
  3. main方法中的语句支持自定义,System.out.println("HelloJava");

4.注释

要求:写代码养成良好的注释习惯 【为己为人】

注释:不会影响我们代码的运行

4.1 注释的好处

  1. 注释就是我们对代码的解释和说明,目的是让我们一目了然的知道代码的作用
  2. 可以帮助我们去调试程序【某行代码可能有问题,可以注释掉,后面在打开,而不是直接删除】

4.2 注释的分类

  1. 单行注释://注释内容
  2. 多行注释:/*注释内容*/
  3. 文档注释:/**注释内容*/

可以使用javadoc命令生成一个文档【了解】

javadoc -d aa -version -author HelloJava.java

在这里插入图片描述

在这里插入图片描述

5.反编译

知道有这么个东西即可,可以使用jd-gui.exe,后面的学习过程中,也可以使用命令

反编译.class是一个二进制文件【除了文本文件之外,比如class文件,图片、音频、doc】我们直接用记事本工具打开,看不懂,期望的是将其反编译成我们的能够看懂的

.class ----> .java

6.变量

6.1 关键字

关键字:在java中,已经定义好的单词,具有某些特殊含义

  • 比如,我们的HelloJava中的,出现的有:publicclassstaticvoid
  • 关键字比较多,不需要记

6.2 标识符

  • 标识符:在java中,我们可以自定义的名称,我们都称为标识符。比如:类名、方法名、变量名、常量名等等。
  • 命名规则:强制,硬性要求
    • 标识符中组成:英文字母(大小写)、数字、_$
    • 不能以数字开头
    • 不能是关键字,但是可以包含关键字
  • 命名规范:软性要求,参见《Java开发手册-泰山版》
    • 类名:大驼峰规则,即多个单词构成,每个单词首字母大写
    • 方法名:首字母小写,小驼峰规则,多个单词构成,第一个单词首字母小写,其余单词首字母大写
    • 见名知意

6.3 数据类型

明确一点:在java中,变量的定义,需要限制类型,即限制该变量能保存什么样的数据

Java数据类型分两大类:基本数据类型+引用数据类型【目前掌握一个String】

基本数据类型,分8种:

  • 整型:byte【1字节8位 -27~27-1、short【2个字节】、int【4个字节】、long【8个字节】

    规律:2位数 ~2位数-1

  • 小数[浮点数]:float【4个字节】、double【8个字节】

  • 字符型:char【0-65535】

  • 布尔型:boolean,该类型的值只有true和false

Java中默认类型:整数int,浮点数double

6.4 变量的定义和使用

明确:

  1. 变量用于存储数据,在我们的内存中,有一块存储空间
  2. 定义变量的时候,要限定该变量存储的数据类型
  3. 在程序运行的过程中,其值可以发生改变

变量定义三要素:数据类型 变量名 变量值

变量定义和使用的步骤方式1:

  1. 声明:数据类型 变量名; int score;
  2. 赋值:score = 10;
  3. 使用:可以将该变量值赋值给另一个变量,或者在这种输出语句中。

变量定义和使用的步骤方式2:

  1. 声明和赋值二合一:数据类型 变量名=值; int score = 10;
  2. 使用:可以将该变量值赋值给另一个变量,或者在这种输出语句中。
public class  Test01
{
	public static void main(String[] args) 
	{   
		//double score = 20.999;
		//需求:使用变量,输出个人信息:名字、年龄、性别 char   一行输出
		//三行输出,只要一个输出语句:我名字:xxx,年龄:11,性别:xx  ---->转义字符
		System.out.println("我 是张安\n年\t龄10\nssssss");
		//变量的基本使用
		//1.声明一个变量:在内存中开辟一个存储空间 byte、short、long
		int score;
		//2.为变量赋值
		score = 10;
		//3.使用变量
		System.out.println(score);

		boolean flag = true;

		//char c = 'A';
		char c = '中';
		System.out.println(c);

		//注意:在使用float类型的时候,需要加f或F double自己写
		float a = 10.2f;

		//保存人的名字,上述8种基本类型就无能为力,所以需要我们的引用类型,先掌握一个String
		//①""在java中,就是我们字符串类型的一个身份
		//②字符串的拼接,可以使用+
		String name = "张三";
		System.out.println("我的名字叫:"+name);
	}
}

6.5 注意事项

  1. 变量赋值:定义的变量,必须赋值[初始化]才能使用【变量都在main方法中】
  2. 变量名称:在同一个大括号范围之内,变量不能重名

6.6 转义字符

在java中,转义字符有特殊功效。常用的是:

  1. \n:换行
  2. \t:制表符,大空格,用于排版

6.7 类型转换

在程序中,有时候会出现类型不一致的情况

6.7.1 自动转换

将一个小类型,赋值给一个大数据类型,自动转换,转换成大数据类型,不会出现精度丢失的问题。

转换规则:byte、short、char ---> int ---> long -->float --->double

6.7.2 强转

大类型赋值给小数据类型,需要强制转换

public class Test02 
{
	public static void main(String[] args) 
	{
		//数据类型之间的转换
		float f = 10.3f;
		//将f的值,赋值给double类型
		double d = f;
		double a = 10.9;
		System.out.println(a);

		byte bb = 10;
		int i = 100;
		byte cc = i + bb;	//编译能过否?在表达式中,类型会自动提升为大类型

		char c = '中';
		int b = c;
		System.out.println(b);

		//将大类型赋值给一个小类型:小数据类型 变量名 = (小数据类型)大数据类型的变量 强转
		int e = (int)a;
		System.out.println(e);
	}
}

6.8 键盘输入

需要使用JDK提供的类【跟System类似】

三步走:

  1. 引入Scanner:import java.util.Scanner;需要在类的上面
  2. 创建Scanner对象:Scanner 变量名input = new Scanner(System.in);
  3. 接收键盘输入:int a =input.nextInt(); String name = input.next();

7.常量

在程序运行的过程中,其值不能发生改变。π

语法:通过final修饰

强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

正例:MAX_STOCK_COUNT / CACHE_EXPIRED_TIME

反例:MAX_COUNT / EXPIRED_TIME

8.运算符

8.1 算术运算符

注意:a++,++的区别

//1.算术运算符:+、-、*、/、%【取余】  ++ --(笔试,容易搞错)
// ++ :分为a++,++a
// a++,++a的使用说明
// 1.若是独立成一条语句,则二者等效
// 2.若用在输出语句或者其他表达式中,a++,则先用后+1;++a,则先+1,再用
int a = 20;
int b = 6;
System.out.println(a/b);
System.out.println(a%b);

double c = 20.66;
double d = 2.33;
System.out.println(c/d);
System.out.println(c%d);

System.out.println("===============================");
System.out.println(b);
//b++;		
//++b;
//System.out.println(b);
//System.out.println(++b);
//System.out.println(b);
//int result = (b++)+(a++)+(++b)+(++a);
//System.out.println(result);

8.2 赋值运算符

结合:11.1 进一步理解

//2.赋值运算符:=,+=,-=,*=,/=,%=
//a = a+1;
a +=3;
System.out.println(a);

8.3 比较运算符

结果:boolean

//3.比较运算符:>、< 、<= 、>=、==、!=
System.out.println(1==1);
System.out.println(1 !=2);
System.out.println(1 >= -1);

8.4 逻辑运算符

结果:boolean

//4.逻辑运算符:&& vs & :与,并且;|| vs | 或;! 取反
//面试:&&(短路与) vs &的区别,实际开发中用&&
//&&:若左边为false,右边不管是哈,都不在参与运算
//&:不管左边结果是啥,两边都会参与运算
//||:若左边是true,右边不管是哈,都不在参与运算
int c1 = 10;
int c2 = 20;
//boolean r = (c1 >= c2) && (++c1 > 15);
boolean r = (c1 >= c2) & (++c1 > 15);
System.out.println(c1);
System.out.println(!r);

8.5 位运算符

位运算的执行效率是最高

经典且古老面试:如何高效的实现2乘以8

//5.位运算符
int aa = 2;
System.out.println(aa << 3);  //aa*2^3
System.out.println(aa >> 1);  //aa*2^(-1)
System.out.println(-16 >>> 2); //无符号位的运算 ,知道-16如何存储

8.6 三元运算符

语法:数据类型 结果 = 条件表达式?值1:值2

Tips:结果的数据类型,跟表达式后面的值类型一致;三元运算符的结果必须有一个变量来存储或者在语句中使用

//6.三元运算符
int d1 = 20;
int d2 = 10;
System.out.println(d1 >= d2?"最大值:"+d1:"最大值:"+d2);
//String rr = d1 >= d2?"最大值:"+d1:"最大值:"+d2;

9.扩展知识点

9.1 +=符号的扩展

//常见基础笔试题
short s = 1;
//s = s + 1;  编译不过,前面类型转换分析过
s += 1;		// +=只运算一次,并且带有强转的特点,等效于 s = (short)(s+1),所以编译ok
System.out.println(s);

9.2 常量和变量的运算

byte b1 = 1;
byte b2 = 2;
byte b3 = 1 + 2;	//编译ok,1和2是常量,所以在编译的时候【javac】,已经确定好了1+2的结果,同时结果没有超出byte范围
byte b4 = b1 + b2;	//b1和b2都是变量,变量的值可能发生变化,所以在编译的时候,javac不确定b1+b2的结果是什么,所以会将结果以int类型进行处理
System.out.println(b3);
System.out.println(b4);

10.小总结

  1. Java那几个重要里程碑版本要知道
  2. Java体系分类:JavaSE、JavaEE、JavaME
  3. Java的环境搭建:必须熟练搞定
  4. Java之HelloWord:理解流程【源码—》编译javac—》运行java】,main方法四要素
  5. 3种注释
  6. 数据类型2大类:基本【8种】+引用
  7. 变量的定义和使用
  8. 常量,跟变量的区别
  9. 运算符:a++,++a的区别,&& vs &

11.作业

  1. 使用三元运算符实现求3个数的最大值

  2. 键盘输入个人信息【姓名、成绩、是否有offer、性别】,一行输出语句【提交】

    姓名 成绩 是否有offer 性别

    zs 20.22 Y/N 男/nv

  3. IDEA安装好,傻瓜式安装

  4. 预习:流程控制+数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值