零基础学java
day01. 概述与环境搭建
1. java概述
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、
指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java具有简单性、面向对象、分布式、
健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应
用程序、分布式系统和嵌入式系统应用程序等。
1.1 Java的历史
1.95年sun公司推出面向对象的程序设计语言java,"詹姆斯-高斯林"被誉为"java之父"
2.04年发布JDK1.5版本;14年由Oracle(09年收购sun公司发布java8.0版本
1.2 java的语言特点
面向对象 简单性 解释性 高性能 分布式处理 多线程 健壮性 动态结构中立 安全性
开源
跨平台
2. Java语言开发环境搭建
2.1 JDK;JRE;JVM概述
JDK:是Java程序开发工具包,包含JRE和开发人员使用的工具.
JRE:是Java程序的运行时环境,包含JVM和运行时所需要的核心类库.
JVM:: Java虚拟机,是运行java程序的假想计算机.
三者之间关系:JDK > JRE > JVM
2.2 JDK的安装
在oracle公司官网下载JDK后,安装目录不要放在c盘,避免后期出现错误导致误删系统文件
安装路径中不能包含中文和空格
2.3 JAVA_HOME环境变量的配置
为了开发方便,我们想在任意的目录下使用JDK的开发工具,则必须要配置环境变量,配置环境变量的
意义 在于告诉操作系统,我们使用的JDK开发工具在哪个目录下.
鼠标右键---->属性---->高级系统设置---->环境变量---->在系统变量中点击新建创建新的环境变量
---->变量名输入JAVA_HOME,变量值输入JDK的安装目录---->选中Path环境变量,双击或者点击编辑
---->在变量值的最前面,键入 %JAVA_HOME%\bin;分号必须要写,必须是英文格式---->环境变量配
置完成,重新开启DOS命令行,在任意目录下输入 javac 命令,运行成功。
还有一种配置方法是在Path环境变量中,直接将jdk的安装目录编辑在其中.这里不推荐!
day02.第一个程序Helloworld和标识符,关键字,变量,常量
1. DOS命令操作
Windows键+R快捷呼出运行窗口------->输入cmd回车打开DOS命令窗口
更换盘符: d: e:
查看当前目录下的文件及文件夹: dir
进入文件夹: cd 文件夹的名字
返回上一级目录: cd..
清空屏幕: cls
删除文件: del 文件名
删除文件夹: rd 文件夹名称
退出: exit
2. 第一个程序Helloworld
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
3. 标识符&关键字
标识符:
定义:标识符是为方法、变量等起名字的字符串
组成规则:
1.标识符由字母、数字、_(下划线)、$组成
2.标识符采用有意义的简单命名,做到见名知意
3.不能以数字开头
关键字:
关键字是电脑语言里事先定义的,有特别意义的标识符
驼峰命名法:
大驼峰:定义类、接口时使用
单词以大写字母开头,若有多个单词,每个单词首字母大写
public class FirstClass
小驼峰:定义变量、函数时使用
若标识符只有一个单词,全小写;若标识符由多个单词组成,从第二个单词开始首字母大写
int mathScore = 10
常量:所有单词全部大写,多个单词间以_分隔
4. 常量&变量
常量定义:
在程序的执行过程中,其值不发生改变的量
常量的分类:
字面值常量 自定义常量
字面值常量又细分:
字符串常量 使用双引号括起来的内容 "helloworld"
字符常量 使用单引号括起来的内容 'A','a','0'
字符不参与运算的时候,它就是本质字符值,但是如果参与运算,每一个字符会寻找对应的
ASCII码表中的整数值
'A':65
'a':97
'0':48
整数常量
100,65....
小数常量
通用的小数9.9,10.0......
布尔常量
true/false
空常量:
null:描述引用数据类型的默认值
String s = null ;
System.out.println(s) ;
自定义常量
后面面向对象中再说
变量定义:
变量:在程序的执行过程中,其值发生改变的量
变量的三要素
数据类型 变量名 = 初始化值; //定义的时候就需要赋值
Java中的数据类型(重点)
两大类
1)基本数据类型(四大类型,8种)
整数类型:默认int类型
byte 字节类型 占用的字节数1个字节 (-128~127:范围)
short 短整类型 占用的字节数 2个字节
int 默认类型 占用的字节数 4个字节
long 长整型 占用字节数 8个字节(以后用作定义时间--记录当前系统 时间毫秒值)
浮点类型:默认类型是double
float 单精度类型 (占4个字节)
double 双精度类型 (占8个字节)
字符类型
char 占两个字节数
布尔类型 不参与运算(只是提供判断不和其他数据类型转换 ):占1个字节
boolean (true/false)
boolean flag = true ;
2)引用数据类型:类,数组,接口(后面说)
day03.显隐式类型转换&运算符
1. 默认类型提升(隐式转换)
byte,short,char三者之间不转换,但是分别自己参与运算的时候,优先提升为int(考点)---long---float---double
2. 显式类型转换(强制类型转换)
当进行变量相加计算时,接收的类型范围小于计算结果的数据类型需要使用Java的强转类型转换
格式:
目标数据类型 变量名 = (目标数据类型)(结果) ;
例如:
int a = 3;
byte b = 4;
byte c = (byte)(a + b);
注:一般情况下,不建议使用强制类型转换,会损失数据精度!
3. 运算符
3.1 算数运算符
算术运算符: +, -, *, /, %(模)
(++;--)
需要分场景使用:
单独场景使用时:无论是i++还是++i,没有影响,都是自增或自减1
参与运算时:i++&i-- .是先将i的值参与运算,然后再自增或自减
++i&--i .是i先进行自增或者自减,然后再参与运算
3.2 赋值运算符
赋值运算符:
=, +=, -=, *=, /=, %=
=和==不一样:=是将=右边的值赋给左边的变量;==是比较,结果只有True和Float
3.3 比较运算符
<,>,<=,>=,!=,==
比较运算符的表达式无论简单还是复杂----
最终的结果都是一个boolean
3.4 逻辑运算符
逻辑单与& (并列关系)
特点:有false,则false
逻辑单或| (或的关系)
特点: 有true,则true
逻辑异或^
特点: 相同则为false,不同则为true
逻辑非!
特点:非true,则false;非false,则true
偶数个非是它本身!
逻辑双与&&和逻辑单与&的区别?(逻辑双或||和逻辑单或| 同理)
共同点:
都是表示并列关系,基本特点:有false,则false
不同点:
具有"短路"效果
逻辑双与&& 连接的表达式:如果左边是一个false,右边就不执行了!
3.5 位运算符
位运算符: 就是对当前这些数据进行计算的(补码进行计算的)
基本位运算符:
位与&: 有0则0
位或|: 有1,则1
位异或^: 相同则为0,不同则为1(熟记)
一个数据被另一个数据如果位异或两次,其值是它本身!
~反码: 全部按位取反(0变1,1变0)
其他的位运算符:移位符号
<<:左移
将这个数据(补码)向左移动,将高位丢弃掉,右边补0
快速应用:
将<<这个符号左边的数据乘以2的移动次幂
>>:右移
将这个数据(补码)向右移动,最高位是1,左边补1;最高位是0,左边补0;
快速使用:
将>>符号左边的数据除以2的移动次幂
>>>:无符号右移:无论最高位是1还是0,那么在左边始终补0
3.6 三元运算符(三目运算符)
格式:
(表达式)?执行 true的结果:执行false 的结果;
表达式:可以嵌套使用
例如:
(表达式1)?((表达式2)?执行true的结果:执行float的结果):((表达式3)?执行true的结果:执行float的结果)
流程:
首先判断表达式是否成立,如果成立,则执行true的结果
否则,执行false的结果;
day04.键盘录入数据
操作步骤:
1)导包 import(关键字) java.util.Scanner ; 格式必须class类上面
2)创建一个文本扫描器对象 (键盘录入对象)
固定格式
Scanner 对象名(自己起名字) = new Scanner(System.in) ;
3)友情提示并录入int类型数据
System.out.println("请您输入一个数据:") ;
表示:录入的是int类型数据
int 接收的变量名 = 对象名.nextInt() ; //nextInt() ;键盘录入Scanenr的方法
4)然后 "接收的变量名 "输出出来".举例:
import java.util.Scanner ;
class ScannerDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入一个数据(int):") ;
int a = sc.nextInt() ;
System.out.println("a的值是:"+a) ;
}
}