java的学习--第一章 java基础入门
1.学习内容
- java语言简介
- JDK安装和配置
- java运行原理
- Hello World案例
- java的数据类型、变量、运算符、注释
- 控制台的输入和输出
2.java简介
2.1前言
Java语言是美国Sun公司(stanford University Network),在1995年推出的高级编程语言。所谓编程语言是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为“Java之父”。
2.2java历史版本
2.3java特点
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、跨平台与可移植性、多线程、动态性等特点。
单核心 单线程 多核心 多线程。(微秒级)
windows,mac,linux,unix .apk .ipa
面向对象三大特征 :封装,继承,多态
java面向对象: 封装,继承,多态,抽象,接口
需求:我想吃番茄炒蛋!
1.自己做
2.去餐厅
面向过程: 自己做
1.买食材
2.处理食材
3.起锅烧油
。。。
3.出锅
面向对象: 去餐厅,老板,来份番茄炒蛋!
思想:
2.4java开发方向
JavaSE
Java Standard Edition PC方向 桌面应用
JavaEE
Java Enterprise Edition 可扩展的企业级应用Java平台 服务器项目 网页
爱奇艺 打开网页
JavaME
Java Micro Edition用于嵌入式Java平台;移动设备应用
安卓(java):google sun oracle 收购
诺基亚:人需要什么我们就造什么
乔布斯曰过:人的需求是我们创造的
2.5java语言语言能做什么
java语言可以编写桌面应用程序(类似于电脑QQ,但是java不擅长)、Web应用程序(服务器程序)、分布式系统和嵌入式系统应用程序等。人工智能。python(黄金语言) 。
主要应用在web程序的开发领域,常见的互联网应用比如天猫,京东,物流系统,网银系统等,以及服务器后台处理大数据的存储,查询,数据挖掘等也有很多应用。
3.Java开发环境组成(jdk)
3.1jvm虚拟机
JVM 是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
跨平台(不同的操作系统) 任何软件的运行都需要运行在操作系统上,而我们使用Java编写的软件可以运行在任何的操作系统上,这个特性成为java语言的跨平台性。这个特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Windows OS MacOS Linux OS
不同的操作系统,内部的运行原理是不一样,换句话说,windows的软件不能在mac电脑上面进行安装。所以我们很多软件的制作成本就加大了。例如 爱奇艺,需要制作windows版 还需要制作mac版。此时就需要两个开发团队。假如你是老板,急需一种操作:能不能开发一个版本在不同的平台中都能运行,这就是跨平台。
Java是支持跨平台操作的一门语言。
java程序的执行过程:源代码(.java)->编译->字节码(.class)->jvm解释->机器码->系统执行
jvm的作用:加载由源文件编译生成的字节码文件,将其转为机器码,发给系统执行
jvm实现跨平台:java针对不同的系统平台都开发了对应的jvm虚拟机。从而实现同一个字节码文件可以在任意系统上运行,从而实现了跨平台性。所以,jvm就像不同语言的翻译官,同样是一句“你好”,在对英国人说时,英文jvm将它翻译为英语 。对韩国人说时,韩语jvm将它翻译为韩语。
3.2JRE
Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由SUN微系统所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。
3.3jdk
JDK(java development kit)是 Java 语言的软件开发工具包,主要用于各种环境下的java程序开发,包括移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。(电工的工具包钳子,螺丝刀,欧姆表。。。 )jdk中自带有jre。
java程序的执行过程
心理准备: 学习java,先学语法 ---》我们可能刚开始不明白什么意思---》学完后边的内容,我们就明白了。不要着急!
3.4jdk的安装(oracle官网下载jdk安装包)
约定:
0. 以后任何安装路径都不要有中文路径
1. 以后我们的软件统一装到某个盘的某个文件夹中 E:\app
2. 我们安装完成之后 又弹出一个框 这是提示我们安装jre,Jdk安装完成之后 已经有jre了 所以 这个地方取消安装
3. 安装完成jdk之后 在jdk文件夹中
Bin(binary 二进制文件) 这里面是java的执行文件
Include 这里面导入c和c++的一些代码
Jre java的运行环境
Lib 资源库
4. 配置jdk的环境变量(可以理解成告诉你的电脑 我们安装了jdk 我们要开发java 并且 jdk安装到哪了)
3.5环境变量的配置
【我的电脑】-右键-【属性】-【高级系统设置】-【环境变量】
【系统变量】-【新建】JAVA_HOME :jdk安装根目录
【编辑】-path:添加 %JAVA_HOME%\bin
配置完毕后,依次点击确定就可以了。
如果不配置环境变量,那么java的的可执行文件只能在安装位置的bin目录下才可以执行。
配置环境变量就是为了,可以在任意路径下运行java可执行文件。
JAVA_HOME
指向jdk的安装目录,Eclipse/idea/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
JAVA_HOME
自己jdk安装路径
CLASS_PATH (可以不用配置 jdk1.5就不用配置了,会自动找。)
作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。
需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
新版的软件,classpath没有什么用了,因为在安装的时候已经选了JDK而且可以添加
CLASS_PATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Path
作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。
需要把jdk安装目录下的bin目录增加到现有的PATH 变量中,bin目录中包含经可执行文件javac/java/javadoc等待,
设置PATH变量后,就可以在任何目录下执行javac/java等工具了。
bin目录 是公认的可执行文件 放置的目录。
Path
%JAVA_HOME%\bin
4.HelloWorld入门程序
4.1程序开发步骤说明
开发环境搭建完成后,可以开始开发我们的第一个java程序了。
Java程序开发三步走:编写,编译,运行
编程语言分类:
解释性语言:比如 javascript, python, perl, shell
编译型语言:比如 java,c,c++,c#
XXX.java--编译-->XXX.class
javac.exe :编译器 javac 编译命令
java.exe :解释器 java 运行命令
4.2编写java源程序
1.新建一个文本文档文件,编写以下代码
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World java!!!");
}
}
注意:类名要跟文件名完全一致。要遵循大驼峰命名。规定。
定义类的格式:
public class 类名{}
面试题:一个XXX.java文件中可以有多个类吗?
答:可以,但是只能有一个公共的类(使用public 修饰的类)
注意:类名要跟文件名一致,开头字母使用大写,遵循驼峰命名法。
2.编译和运行
window+R 打开命令行模式,输入cmd 将目录切换到 java文件所保存的目录
输入:javac 文件名称 生成.class类型的字节码文件
输入:java 字节码文件 运行程序
4.3使用idea工具编写代码
打开百度--》搜索idea用法---》整体浏览
创建项目
创建包
包就是文件夹。类比,css,js,img。
不同模块的代码可能有相同的名字。使用包来分割/存储不同的功能的代码。
包的命名规范:
特点:全小写,点分隔,反域名。
www.taobao.com
com开头:公司项目 com.aaa.chaoshi.util
org开头:公益项目
java开头:java中的类包
扩展:自己去百度--》包的命名规范
创建java文件
4.4注释
文档注释用于在生成文档时对写的类,方法或字段进行解释
多行注释,用于写多行的说明信息,常用于注释一段代码
单行注释,描述的信息比较少的时候,使用单行注释
4.5关键字
是指在java中有特殊含义的,被保留的,不能随意使用的字符
特点:
会识别
全小写
有颜色
4.6标识符(变量名,方法名,类名)
概念:在程序中我们自己定义的内容。比如类的名字、方法的名字和变量的名字等,都是标识符
**标识符的命名规则:硬性要求
- 构成:字母、数字、下划线 、$符号
- 首个只能是:字母 、下划线 、$符号,不能以数字开头
- 不能使用关键字
**标识符的命名规范:软性要求
- 类名规范:首字母大写,后边每个单词的首字母大写(大驼峰)
- 变量名规范:首字母小写,后边每个单词的首字母大写(小驼峰)
- 方法名规范:同变量名
- 见名知意
5.常量
5.1概述
常量:是指在java程序运行期间固定不变的数据
5.2分类
常量命名:全大写+下划线字母命名
练习:演示打印输出所有的类型
6.变量和数据类型
6.1变量
1.概述:程序中可以改变的量称为变量,内存中最小的存储单元
为什么用变量?间接的思想,间接的越多,证明程序越优秀!
数学中可以使用字母代替数字的方式运算,例如x=1+5或者6=x+5;程序中也是一样是的,相当于一个容器,内部可以存储数据。Java中要求一个变量每次只能保存一个数据,必须明确保存的数据类型。
定义变量的格式:
数据类型 变量名 ;
变量名=值;
int a;
a = 10;
数据类型 变量名=值
public class Demo02 { int b = 20;
public static void main(String[] args) {
//年龄
int age;
//定义一个int类型的变量 age = 10;
//给age赋值在内存中开辟一块内存空间 起名为age 并且这块内存空间中只能存储int类型的数据 //int a,b,c;//同时定义多个变量
int a=10,b=8,c=9; //定义变量的同时,初始化
System.out.println(age); }
}
**注意:
- 变量必须初始化后才能使用
- 不能有同名变量
- 在该个类型的变量中只能存储该类型的数据
- 可以同时定义多个变量并赋值(但是,不推荐使用!!!!)
6.2数据类型
声明:数据类型 变量名 = 初始值;
背住:
基本数据类型:
四类八种:
整型 整数 byte short int long
浮点型 小数 float double
字符型 一个字符 char
布尔型 boolean
引用数据类型:
String字符串 数组,函数,对象 Enum枚举
分类:
整数类型变量
- 整型类变量用来存储整数数值,即没有小数部分的值
整数类型分四种不同的类型:
字节型(byte)、短整型(short)、整型(int)默认、长整型(long)
1TB = 1024GB
1GB = 1024MB
1MB = 1024KB
1KB = 1024Byte
1Byte = 8 bit 比特
int是默认类型。
byte 一个8位二进制数 01011010
反编译。
- ** 如果想使用long 必须在数据的后边 加一个 L 后缀
为什么java中要整四个类型表示整数?
- 因为不同的类型 所占的内存大小不一样,那么存储的范围也就不一样。
//右侧不能超出左侧的数据范围
byte a = 124;
System.out.println("a:"+a);short b = 2560;
System.out.println("b:"+b); int c = 2000;
System.out.println("c:"+c);double d = 30000000;
System.out.println("d:"+d);
浮点类型
- 浮点类型分为两种:单精度浮点(float)、双精度浮点(double)
- double型所表示的浮点数比float型更精确;浮点数的默认类型为double类型。
- 小数默认double 如果非要用float 必须加上 F 的后缀
字符类型
- 字符类型变量用于存储一个单一字符,Java中用char表示。
- Java中,每个char类型的字符变量都会占用2个字节,16位。
- char类型的变量赋值时,需要英文的单引号' '把字符括起来,如'a'。
char类型的变量赋值范围是0~65535内的整数。
char a = '中';
面试题:char类型能存储汉字吗?
能,因为一个汉字是两个字节
- 任何字符在内存中都是以数字的形式存储的。
注意事项:
1.字符串是引用数据类型
2.浮点型可能只是一个近似值,并非精确的值
3.数据范围与字节数不一定相关,
例如float 数据范围比long更加广泛,但是float是4字节,long是8字节
4.浮点数默认double类型,如果一定要使用float类型,需要加上一个后缀 F/f。
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L/l表示long类型。
后缀推荐使用大写字母。
Boolean
布尔类型变量用来存储布尔值,在Java中用boolean表示,boolean类型的变量只有两个值,即true和false,默认值为false。每个boolean占8位。
boolean flag = true;
System.out.println("flag:"+flag);
变量使用时的注意事项:
1.如果创建多个变量,那么变量之间的名称不可以重复。
2.对于float和long类型来说,字母后缀F和L不能丢掉。
3.变量右侧的数据值不能超过左侧类型的范围。
4.变量一定要赋值*(初始化)后才能使用。不赋值不能直接使用。
5.变量的使用不能超出作用域的范围。
作用域: 从定义变量的一行开始,一直到直接所属的大括号结束为止。
6.可以通过一个语句来创建多个变量,但是不推荐使用。
7.运算符
算术运算符:+(字符串拼接运算) - * / % ++ -- ;
++ -- 一元运算符
1.如果直接使用,前置++跟后置++没有区别
2.如果用于 赋值 js中那一套。
关系(比较)运算符:>= <= > < !=;
==:
1.如果是基本数据类型比较值。
2.如果是引用数据类型 比较的内存的地址值!
他的结果一定是一个boolean值,true/false,如果是连续判断不能连着写。
逻辑运算符:只能使用boolean值,条件可以连续写
&&(并且) 所有条件全都满足才是true,否则false
||(或者) 至少有一个是true就是true否则false
! (取反) 直接相反的结果
赋值运算符:=, += , -=, *= ,%= ,/= 复合赋值运算符会隐含强制类型转换。
条件运算符:? : 三目表达式
格式:数据类型 变量名称 = 条件判断 ?表达式A : 表达式B;
*(表达式A和表达式B 要同时符合左侧的数据类型)
流程:首先判断条件是否成立
如果成立 表达式A
如果不成立 表达式B
一元,二元,三元 元就代表需要一个数据
优先级
() ++ ,-- , !》 算术运算符 (* / +-)--》关系运算符--》逻辑运算符(&& ||)--》赋值运算符--》条件运算符
- ++
- 条件运算符
8.类型转换(数值数据)
Java中要求参与计算的数据,必须保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
- 隐式转换(自动)
- 特点:自动完成,不需特殊处理
- 规则:范围从小-->大
- 显式转换(强制)
- 特点:需要数据处理,不能自动进行
- 规则:小范围 变量名 = (范围小的类型)范围大的数据
byte a = 10;int b = a;//1.自动转换//此时 a是Byte b 是int类型 ---》由小范围 ——-》大范围System.out.println(b);int c = 10;byte c1 = (byte) c;//此时 c是 int c1 是byte --> 此时放不下//2.如果非要放 强制类型转换// 由大范围 ——-》小范围// 小数据类型 变量 = (左边的小数据类型) 大类型的值。//注意:强制类型转换有可能会造成 精度丢失 和 数据溢出//精度丢失double d1 = 3.141592657678686876;float d2 = (float) d1;System.out.println("d2 :"+d2);int d3 = (int)d2;System.out.println("d3 :"+d3);//数据溢出long l1 = 7000000000L;int l2 = (int)l1;System.out.println("l2: "+l2);//元码,补码,反码}
两个数据运算,得到的结果会自动的提升为两个数据中较大的类型。
特殊情况:
9.Scanner,控制台的输入
是java提供给我们的类,我们只需要直接用就可以了。
附件
ASCII(小表):American Standard Code for Information Interchange 美国信息交换标准代码
Unicode码表(大表):万国码,也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。
Emoji:
ascii表格
unicode : 万国码 任意一个字符都可以在这里找到。
Emoji 颜文字
面试题:
请问:下边的代码执行的结果是什么?
short a = 5;
a = a+5;
System.out.println(a);
请问下边代码执行的结果是?
short a = 5;
a+=5;
System.out.println(a);
java的学习--第一章 java基础入门相关推荐
- 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld
第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...
- 《跟旺旺老师学Java》_第一章Java简介与JDK部署_第一部分Java是什么
第一章:Java简介与JDK部署 第一部分:java是什么 "是白云,是瀑布,是海滩,不---,都不是,这是太原大理石二厂生产的景云牌大理石"看到这个标题,脑海中莫名的闪过这句小时 ...
- p3.第一章 Python基础入门 -- Python编程基本概念 (三)
1.2.2 Python语言 1.2.2.1 Python发展 1989年圣诞节期间,为了打发无聊的时间,荷兰人Guido van Rossum(吉多·范罗苏姆)(数学.计算机双硕士,2005年加入G ...
- p2.第一章 Python基础入门 -- 冯诺依曼体系和计算机基础 (二)
1.2 核心基础 1.2.1 计算机基础知识 艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家.逻辑学家,被称为计算机科学之父,人工 ...
- 第一章 Vue基础入门
文章目录 引言 1.快速入门 1.1.创建项目 1.2.模型和视图 1.3.双向数据绑定 2.{{ }} - 插值 2.1.语法 2.2.案例 3.v-text.v-html(内容绑定) 3.1 语法 ...
- java的学习--第二章 java流程控制
1.本章内容 控制代码如何执行.是否执行.执行多少次. 2.程序结构 顺序结构 分支结构 循环结构 2.1分支结构 1.if(){} 2.if(){}else{} 3.if(){}else if(){ ...
- think in java i o_《Thinking in Java》学习——18章Java I/O系统(三)
ppe#标准I/O 一.从标准输入中读取 1.按照标准I/O模型,Java提供了System.in.System.out.System.err.其中System.out已经事先被包装成了PrintSt ...
- Java 学习笔记:第一章 Java入门
Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...
- 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)
java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...
- Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具
Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...
最新文章
- k8s的imagePullSecrets如何生成及使用
- golang 执行命令 设置超时
- python如何使用session和cookie_django进阶之cookie和session的使用示例
- 【译】Why Decentralized AI Matters Part II: Technological Enablers
- 矢量切片_数据粒度均衡的二维矢量瓦片构建方法
- 5.7.22mysql charset_Mysql5.7.22 坑爹的 `character_set_database`
- 0xc000007b:vs2012+Opencv2.4.4出现0xc000007b问题
- Linux中Docker部署Tomcat
- 陈纪修老师《数学分析》 第08章:反常积分 笔记
- Using Beyond Compare with Version Control Systems(ZZ)
- linux系统中打rz命令后出现waiting to receive.**B0100000023be50
- 成立1年的水母智能,AI智能设计生意做得如何?
- ANR系列之一:ANR显示和日志生成原理讲解
- AI已经参与论文打假了
- 人脸识别 —— insightface
- 大数据热的冷思考:无法取代传统的新闻传播科研方法
- 将《2020中国统计年鉴》中的GDP数据换算成不变GDP数据
- 在阿里外包是一种什么样的体验?
- 真的必须要在主线程更新UI吗?
- 麒麟V10下 安装打包程序
热门文章
- 读计算机专业买什么笔记本电脑好?你算问对人了
- 很抱歉,程序无法在非MBR引导分区上进行激活
- ivx中字体显示_Windows 7 中的 SimSun-ExtB 是什么字体,为何与中易宋体 SimSun 显示出来不一样?...
- Jasper报表导出pdf中文不显示——Font simsun is not available to the JVM. See the Javadoc for more det,已解决
- 《酒吧圣经》学习笔记1
- IsPostBack深入探讨
- mingw-w64-i686-toolchain
- TCP 和 UDP 区别及使用场景(详细)
- c语言课程设计管理系统的设计,c语言课程设计-学生管理信息系统设计.doc
- 【LEDE】树莓派上玩LEDE终极指南-92-自己编译的LEDE为啥子不能用SSR和KoolProxy?