1.历史
Java是使用C++开发出来的。1995年,SUN正式推出了Java编程语言。
Java最初的开发模式分为三类:
Java SE(2005之前称为J2SE):进行单机版程序的开发,往往是作为基础平台。
Java ME(2005之前称为J2ME):进行移动开发的。后来这项开发已经被Android所取代了。
Java EE(2005之前称为J2EE):是Java开发的企业版。
2.Java主要特征
①解释型语言
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。
运行效率较低,不能脱离解释器独立运行。但跨平台容易
例如:Ruby、Python等语言
②编译型语言
使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性的“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译(Compile)。
编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行。运行效率较高,但不利于平台的移植。
例如:C、C++、FORTRAN、Pascal等高级语言
③Java程序的运行机制和JVM
Java语言比较特殊,由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定的平台的机器码,而是生成一种与平台无关的字节码(也就是.class文件)。当然这种字节码不是可执行性的,必须使用Java解释器来解释执行。因此我们认为:Java语言既是编译型语言,也是解释型语言
Java里负责解释执行字节码文件的是Java虚拟机,即JVM(在一台计算机上由软件或硬件模拟的计算机)。JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机编译后的Java字节码就可以在该平台上运行。
④Java特点
Java具备可移植性
Java语言的开发足够简单
Java是为数不多支持多线程编程的开发语言
Java支持自动的垃圾收集处理
Java是一门面向对象的编程语言
1.首先计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,
又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,
通常用大写字母”B”表示,1个字节是由连续的8个位组成。
2.除了字节外还有一些常用的存储单位,其换算单位如下:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1.按win+r,在条框中输入cmd进入,默认为c盘的users,可通过输入 d:进入d盘,不区分大小写,其对应的目录与在磁盘的目录位置相同。
2.进入子目录用cd+想访问的目录,若目录名称较为单一可按目录前几位符号进入,如:
05-java学习,只需按05即可。
3.进入上一级目录,输入“cd..”。
4.进入多级目录,cd+目录名称+\下一级目录,以此类推。
5.dir,显示当前文件夹。
6.css,清空屏幕。
7.exit,退出。
8.除此之外
help: 可查看各种命令作用
shutdown: 后跟不同参数作用不同。常见参数及作用:/l: 注销;/s: 关闭计算机;/r: 关闭并重启计算机;/a: 终止系统关闭。(ps:也可以远程关闭他人电脑哦,适用于机房整蛊)
ipconfig: 查看本地IP地址。后跟参数 /all 显示全部配置信息
netstat: 查看网络状态
ping 目标IP: 查看与目标主机的连通性
route print: 打印与目标主机的路由
net: 网络管理
nslookup: 查看DNS域名解析记录
tracert: 查看与目标主机的路由节点
ver: 显示Windows的版本
tree: 一图形方式驱动程序或路径的目录结构
time/date: 显示或设置系统时间。time:时分秒;date:年月日。
dir: 显示一个目录中的文件和子目录
cls: 清除屏幕
cd: 显示当前目录的名称
set: 显示当前所有环境变量下面是启动部分工具的命令:
calc:启动计算器
snippingtool:截图工具,支持无规则截图
write:写字板
notepad:打开记事本
mspaint:画图
magnify:放大镜实用程序
————————————————
来自CSDN博主「Shuo..」的原创文章。
原文链接:https://blog.csdn.net/Qianzshuo/article/details/104171681
1.搭建开发环境。
开发环境搭建完毕,可以开发我们第一个Java程序。Java程序开发三步骤:编写、编译、运行。
2.编写java源程序。
1).在目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为.java。
2).用记事本打开使用notepad++记事本软件。
3).在文件中键入文本并保存,代码如下:
public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } }
文件名必须是HelloWorld,保证文件名和类的名字是一致的,注意大小写。每个字母和符号必须与示例代码一模一样。
第一个HelloWord源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件编译成JVM可以看懂的字节码文件。
3.编译java源程序
在DOS命令行中,进入Java源文件的目录,使用javac命令进行编译。
1、单行注释:“//……”
2、块(block)注释:“/*……*/”
3、文档注释:“/**……*/”
1、Java 关键字
1.1、概念java关键字,是java自身的保留字;保留字不能用来定义常量、变量、和任何标识符的名称。
1.2、规则
java中所有的关键字全部都是小写,程序中的标识符不能以关键字命名。
1.3、说明
1)java中const和goto是两个保留字关键字,虽存在,但无任何意义,在程序中也是不可以作为自定义的标识符。
2)true、false和null不属于关键字,它们是一个单独标识类型,不能直接使用。
2、Java标识符定义
2.1、概念java中,用来定义包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。
2.2、规则
1)标识符可以由字母、数字、下划线(_)和美元符号($)组成
2)标识符不能以数字开头,不能是java中的关键字。例如:
————————————————
版权声明:本文为CSDN博主「春风化作秋雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiahao1186/article/details/103919312
1.常量概念:是指在Java程序中固定不变的数据。
分类
常量的打印输出
2.变量概念:常量是固定不变的数据,那么在程序中可以变化的量称为变量。
可用标识符定义变量,并给其赋值。
2.1、变量的定义及使用
long类型:建议数据后加L表示。float类型:建议数据后加F表示
2.2、注意事项
变量名称:在同一个大括号范围内,变量的名字不可以相同。
变量赋值:定义的变量,不赋值不能使用 。
1.java数据类型可分为两大类
基本数据类型:包括整数、浮点数、字符、布尔。引用数据类型:包括类、数组、接口。
2.基本数据类型
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
\Java中的默认类型:整数类型是int、浮点类型是double
1.1自动类型转换
eg:double d = 1000;
范围大的数据类型 变量 = 范围小的数据
自动类型转换,数据值的数学意义上的大小是不变的。
1.2强制转换
范围小的数据类型 变量 = (范围小的数据类型)范围大的数据
eg:int i = (int)6.718
强制类型转换,数据值的数学意义上的大小会被改变。
1.3注意事项
浮点转成整数,直接取消小数点,可能造成数据损失精度。int强制转成short砍掉2个字节,可能造成数据丢失。
\大写A加32为小写a,以此类推。
1.运算符和表达式
1..1运算符:对常量或者变量进行操作的符号。
1.2表达式:用运算符把常量或者变量连接起来符合Java语法的式子就可以称为表达式。
不同运算符连接起来的表达式体现的不同类型的表达式。
举例说明:
int a=10;
int b=20
int c=a+b;
+:是运算符,并且是算术运算符
a+b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
2.算数运算符
注意:整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
3.赋值运算符
4.比较运算符
比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false。
5.逻辑运算符
逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true或者false。
6.三元运算符
1.概述:我们在学习运算符的时候,都为每个运算符单独的创建一个新的类和main方法,我们会发现这样编写代码非常的繁琐,而且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。
方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
eg:
可将其看成为四个方法,后续可以用方法体定义。
eg:
2.固定格式为
3.方法调用,如:
从某种程度看方法与c语言中的函数大致相同
1.JShell脚本工具是JDK9的新特性
什么时候会用到JShell工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具。启动JShell工具,在DOS命令行直接输入JShell命令 。
如可进行打印,赋值和运算等操作。
1.+=符号的扩展
2.常量和变量的运算
分析:b3=1+2,1和2是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了1+2的结果并没有超过byte类型的取值范围,可以赋值给变量b3,因此b3=1+2是正确的。反之,b4=b2+b3,b2和b3是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败 。
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
1.if-else语句
int i ; //定义变量 i = 5 ; if( i == 5) {//单判断 System.out.println(" i = 5") ; }
int i ; //定义变量 i = 5 ; if( i == 5) { System.out.println(" i = 5") ; }else { System.out.println(" i != 5"); }
多分支,else if可以有多个,这个怎么使用呢。
if()条件较难达到
else if()条件次难达到
else 条件最容易达到
为什么要这样设计,因为程序是从上而下执行的,如果if很容易达到,那么后面的else if语句写了作用就降低了。
现在有个需求输入成绩,输出成绩的等级。 如果成绩低于60分(不包含60分),输出"不及格"; 如果成绩高于60分但是低于70分(不包含70分),输出"合格"; 如果成绩高于70分但是低于80分(不包含80分),输出"良好"; 如果成绩高于80分但是低于90分(不包含90分),输出"优秀"; 如果成绩不低于90分(包含90分),输出"超优秀";
int score ; //假设成绩都是整数,这里忽略小数 Scanner input = new Scanner(System.in); System.out.println("请输入成绩(0-100):"); score = input.nextInt(); //输入成绩 if(score >= 90) { //上面判断条件不用写成if else(score < 90 && score >= 80), //因为如果开始的if条件不满足,那么score就小于90了 //下面的同理 System.out.println("超优秀"); }else if(score >= 80) { System.out.println("优秀"); }else if(score >= 70) { System.out.println("良好"); }else if(score >= 60) { System.out.println("合格"); }else { System.out.println("不合格"); }
————————————————
版权声明:选用自CSDN博主「有点难!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/toomemetoo/article/details/112094484
在某些简单的应用中,if语句是可以和三元运算符互换使用的。
1.格式
执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。
2.case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
java中的循环语句主要包括while (){}语句,for(){}语句,do{}while()语句
1.while语句:
while语句的使用情况是不知道循环次数的是使用。
格式:
while(判断条件){
循环体;}
public class Demo{ public static void main(String[] args){ int i=0; while(i<100){ system.out.println(i) i++; } } }2、for语句
for使用的场景是:知道循环次数的情况下使用for循环
格式
for(表达1;表达式2;表达式3){
循环体;}
解读:for()循环的执行过程是:1、先执行表达式1的语句,2、再执行表达式2语句,如果表达式2 成立时,则执行循环体的语句,最后执行表达式3,这样从表达式1至表达式3依次执行,当表达式2不成立时,退出循环。
public class Demo(){ public static void main(String[] args){ int sum =0; for (int i=1;i<100;i++){ sum=sum+i; } system.out.println(sum); } }.
3、do{}while()语句
格式:
do{
循环体;
}while(判断条件);
public class Demo{ public static void main(String[] arge){ int i=1; int sum=0; do{ sum+=i; i++; }while(i<100); } }do..while语句中的注意点:
1、do...while语句是先执行依次,在判断条件
2、do....while语句中while();有分号。
————————————————
版权声明:选自CSDN博主「Lerys」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shuiming6486/article/details/98883650
跳出循环
break:终止switch或循环。
continue:结束本次循环(后面语句不在执行),开始下一次循环。
1.格式详解
修饰符:publicstatic固定写法
返回值类型:表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
return:将方法执行后的结果带给调用者,方法执行到return,整体方法运行结束
小贴士:return结果;这里的"结果"在开发中,我们正确的叫法成为方法的返回值
2.定义方法的两个明确
需求:定义方法实现两个整数的求和计算。
明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递 。
3.调用方法流程图解
4.注意事项
定义位置,类中方法外面。
返回值类型,必须要和return语句返回的类型相同,否则编译失败。
不能在return后面写代码,return意味着方法结束,所有后面的代码永远不会执行,属于无效代码
4.方法调用的三种形式
直接调用:直接写方法名调用
赋值调用:调用方法,在方法前面定义变量,接收方法返回值
输出语句调用:在输出语句中调用方法,System.out.println(方法名())
不能用输出语句调用void类型的方法。因为方法执行后没有结果,也就打印不出任何内容。
5.方法重载
指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关 。
1.数组概念::数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
2.定义
方法一:
1.先声明 2.分配空间 3.赋值
int[] arr; //先声明 arr=new int[5]; //分配空间 for(int i=0;i<5;i++)arr[i]=i*10; //赋值 for(int i=0;i<5;i++){ System.out.println("arr["+i+"]="+arr[i]);
方法二:
1.声明并分配空间 2.赋值
int[] arr=new int[5]; //声明并分配空间 for(int i=0;i<5;i++)arr[i]=i*10; //赋值 for(int i=0;i<5;i++){ System.out.println("arr["+i+"]="+arr[i]);
方法三:
1.声明并分配空间然后.赋值
int[] arr={20,68,34,22,34};
3.数组访问
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。索引的有效范围在0~数组长度-1
访问数组的格式:数组名[索引],如a[2]。
4.数组的遍历 (for循环)
5.其他一下操作如获取数组最大数,数组反转,排序数组中的数,都可用for循环完成。
6.数组作为方法参数
数组作为方法参数传递,传递的参数是数组内存的地址。
7.数组作为方法返回值
数组作为方法的返回值,返回的是数组的内存地址。
总结:方法的参数为基本类型时,传递的是数据值.方法的参数为引用类型时,传递的是地址值。