软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。
如:手机应用 是使用 AndroidStudio/Xcode软件开发;java应用 是使用eclipse,IntelliJ *IDEA,NetBean,开发等…
进入Dos命令的方法:
Dos命令界面:
md : 创建目录
cd : 进入指定目录 如:C:\Users\Administrator> cd dosTest 则会进入 C:\Users\Administrator\dosTest>
dir : 列出当前目录下的文件以及文件夹
cd.. : 退回到上一级目录
cd/ : 退回到根目录
rd : 删除目录
del : 删除文件
cls:清空窗口
exit : 推出dos命令行
绝对路径和相对相对的理解
比如当前路径为 C:\Users\Administrator> ,这时候要进入C:\Users\Administrator\dosTest\test目录 则:
绝对路径:从根目录开始,即:C:\Users\Administrator\dosTest\test
相对路径:从当前目录开始:即:.\dosTest\test
注意: . 代表当前目录; .. 代表上级目录
优点
一种纯面向对象的编程语言。(java中一切皆对象!)
一种与平台无关的语言。(它提供了在不同平台下运行的解释环境 jvm) 一次编译,到处运行
一种健壮的语言,吸收了C/C++语言的优点。(完善异常)
有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)
缺点
JavaSE:Java Platform,Standard Edition (我们学习的基础版本)
标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。
JavaEE:Java Platform,Enterprise Edition
企业版:以企业为环境而开发应用程序的解决方案
JavaME :Java Platform, Micro Edition
微型版:致力于消费产品 和嵌入式设备的最佳解决方案
垃圾回收:将不再使用的内存空间应当进行回收
JDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、 jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。 其中的开发工具包括编译工具(javac.exe)打包工具(jar.exe)等
JRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
可以理解为是一个虚拟出来的计算机,具备着计算机的基本运算方式,它主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体平台如window运行这些Java程序。
简单而言:使用JDK开发完成的java程序,交给JRE去运行。
JDK下载地址:
安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)
安装jdk 随意选择目录 只需把默认安装目录 \java 之前的目录修改即可
安装jre→更改→ \java 之前目录和安装 jdk 目录相同即可
注:若无安装目录要求,可全默认设置。无需做任何修改,两次均直接点下一步。
安装完JDK后配置环境变量>>> 计算机→属性→高级系统设置→高级→环境变量
系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(默认是 C:\Program Files\Java\jdk1.8.0_92)
系统变量→找到 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入变量值)
系统变量 → 新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(注意最前面有一点)
系统变量配置完毕
检验是否配置成功 进入dos命令 输入 java -version
若如图所示 显示版本信息 则说明安装和配置成功。
(注:java 和 -version 之间有空格)
创建一个文本文档 名字叫做 MyFist.java
在文本文档中写入如下代码:
public class MyFirst {
public static void main(String[] args) {
System.out.println("你好世界!");
}
}
保存该文件
打开dos命令窗口,使当前目录问 MyFirst.java 所在的目录
在dos命令窗口输入 javac MyFirst.java
上述命令执行成功后,再在命令窗口输入 java MyFirst
如果命令窗口正常输出 “你好世界! ”,则该程序正常运行。
恭喜你!第一个Java程序运行成功!
如果控制台提示:编码XXX编码是不可映射的字符。解决办法是把代码的编码改成 ANSI 。
- 记事本可以直接另存为的时候,选中ANSI编码;
- 如果是Notepad++ 直接在格式中选择 ANSI编码;
注意 :
Java代码编译是由Java源码编译器来完成,流程图如下所示:
Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:
标识符:Java对包、类、方法、参数和变量等要素命名时使用的字符序列。
有了标示符,就可以对这些元素进行访问和操作
由字母、数字、下划线( _ )和美元符号( $ )组成。
不能以数字开头。
区分大小写。A 和a 是两个完全不同的标示符。
长度无限制。(简短易懂即可,尽量不要太长)
不能是Java中的保留字和关键字。
注意:在写标示符的时候尽量有意义!!!规则必须要执行!!!
如:getName、showTime、_number、Student 等。
那些是命名规范:
1 a 2 ¥a 3 $a#12
4 Public 5 public 6 _3
7 3aa 8 a_4
abstract | default | if | private | this |
---|---|---|---|---|
boolean | do | implements | protected | throw |
break | double | import | public | throws |
byte | else | instanceof | return | case |
extend | int | short | try | catch |
final | interface | static | void | char |
finally | long | class | float | native |
super | while | for | new | switch |
null | continue | package | synchronized | transient |
strictfp | volatile | const | goto |
正整数转二进制
要点:除二取余,倒序排列
解释:将一个十进制数除以二,得到的商再除以二,以此类推直到商等于1或0为止,倒取 除得的余数,即为二进制的结果。
例如:把52换算成二进制数,计算结果如图:
52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数为:110100。
由于计算机内部表示数的字节单位都是定长的,都是2的幂次方展开,如8位,16位,或32位…。
于是,一个二进制数用计算机表示时,位数不足2的幂次方时,高位上要补足若干个0。
即:
负整数转二进制
要点:取反加一
解释:将该负数整数对应的正整数先转换成二进制,然后对其取反,再对取反后的结果加1即可
例如:把-52换算成二进制:
即:
二进制转十进制
解释:二进制用数值乘以2的幂次方依次相加
将二进制110换算成十进制:
首位补齐位数:00000110
首位为0,则为整数,那么将二进制中的三位数分别于下边对应的值相乘后再相加得到的值为换算为十进制的结果:
如果二进制补足位数之后首位为1,那么其对应的十进制为负数,那么需要先对二进制减1,再取反然后再换算。
即:
包名:多单词组成时所有字母都小写。
xxx.yyy.zzz —> com.公司简写.包名 —–> com.xyd.demo
类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz HelloWorld
变量名和方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz userName
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
所有的对象都属于引用数据类型,也可以说除了基本数据类型外的所有的类型都是引用数据类型
变量其实是内存中的一小块区域,使用变量名来访问这块区域。因此,每一个变量使用前必须要先申请(声明)(强类型语言的特点),然后必须进行赋值(初始化),才能使用。
如:
int i = 100; 边申明边赋值
int y; 变量的声明
y = i +10; 赋值(初始化)
数据类型 | 内存大小 | 取值范围 |
---|---|---|
byte | 1 字节 | -128 ~ 127 |
short | 2 字节 | -2^15 ~ 2^15 |
char | 2 字节 | 0 ~ 2^16-1 |
int | 4 字节 | -2^31 ~ 2^31-1 即:-2147483648 ~ 2147483647 |
float | 4 字节 | 1.4013E-45 ~ 3.4028E+38 |
long | 8 字节 | -2^63 ~ 2^63-1 |
double | 8 字节 | 4.9E-324 ~ 1.7977E+308 |
boolean | 1/8 字节 | true/false |
byte:
short:
int:
long:
float:
double:
boolean:
char:
char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
部分asc码表:
26个大写英文字母:
十进制 16进制 字符 解释
26个小写英文字母:
容量小的类型自动转换成容量大的数据类型
byte,short,char < int < long < float < double
byte,short,char之间不会互相转换,他们三个计算时首先转成int类型
如:
int a = 4 ;
double b = a ;
容量大的类型转换成容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出,使用时要格外注意。
如:
float f =14.8f;
int i = (int)f;
注意:boolean值不能与其他任何类型之间进行强制类型转换
运算符 | 名称 | 用法 | 描述 |
---|---|---|---|
= | 赋值 | int a = 3 ; | 将 = 右边的值 赋值给 = 左边的变量 |
运算符 | 名称 | 用法 | 结果 |
---|---|---|---|
+ | 加 | 5 + 2 | 7 |
- | 减 | 5-2 | 3 |
* | 乘 | 5*2 | 10 |
/ | 除 | 5/2 | 2 |
% | 取余 | 5%2 | 1 |
运算符 | 用法 | 描述 |
---|---|---|
++ | (先加)++x 或x++(先用) | 自增1 |
– | (先减)–x或x–(先用) | 自减1 |
运算符 | 名称 | 用法 | 结果(Boolean值) |
---|---|---|---|
> | 大于 | 2>1 | true |
< | 小于 | 2<1 | false |
= |
大于等于 | 2>=1 | true |
<= | 小于等于 | 2<=1 | flase |
== | 等于 | 2==1 | false |
!= | 不等于 | 2!=1 | true |
运算符 | 名称 | 用法 | 描述 |
---|---|---|---|
&& | (短路)与 | 条件1 && 条件2 | 只要两个条件有一个为假,结果为假 |
& | 与 | 条件1 & 条件2 | 只要两个条件有一个为假,结果为假 |
|| | (短路)或 | 条件1 || 条件2 | 只要两个条件有一个为真,结果为真 |
| | 或 | 条件1 | 条件2 | 只要两个条件有一个为真,结果为真 |
! | 非 | !条件 | 条件为真时,结果为假,反之亦然 |
^ | 异或 | 条件1 ^ 条件2 | 两个条件结果相同时为假,不同为真 |
解释:短路
当 条件1 && 条件2 如果条件1为false,结果明显为false,所以条件2不会再判断。
当 条件1 & 条件2 如果条件1为false,结果明显为false,但条件2语句一样会被运算。
运算符 | 名称 | 用法 | 描述 |
---|---|---|---|
& | 按位与 | 00001001&00001110 -> 00001000 | 按位比较,只要有0,则取0 |
| | 按位或 | 00001001|00001110 -> 00001111 | 按位比较,只要有1,则取1 |
^ | 按位异或 | 00001001^00001110 -> 00000111 | 按位比较,相同取0,不同取1 |
~ | 按位非 | ~00000010 -> 11111101 | 对位取反 |
<< | 左移 | 01000011 << 2 -> 00000110 | 每一位向左移动2位,右边补0,超出位数范围则舍去 |
> |
带符号右移 | 11111110 >> 2 -> 11111111 | 每一位向右移动2位,左边补符号位,超出位数范围则舍去 |
> |
无符号右移 | 11111110 >> 2 -> 00111111 | 每一位向右移动2位,左边补0,超出位数范围则舍去 |
经典案例1:用最快的速度计算2的3次方; 提示:使用<<
运算符 | 名称 |
---|---|
? | 吗 |
: | 否则 |
用法:
zhangSanScore > 98 ? “奖励Iphone 8 ” : “没有任何奖励” ;
语法解释:张三的成绩大于98吗?如果大于”奖励Iphone 8 “,否则”没有任何奖励”;
运算符 | 名称 | 用法 | 结果 |
---|---|---|---|
+ | 字符串追加 | String s=”张三”+”是个男孩”; | s -> 张三是个男孩 |
注:只要+的两端有一端是字符串,则这个时候+就变成了字符串连接符
表达式是符合一定语法规则的运算符和操作数的序列
表达式的类型和值:
类型:表达式的值的数据类型即为表达式的类型
值:对表达式中操作数进行运算得到的结果称为表达式的值
注: 实数常量,(如:1.5)默认类型为 double
整数常量,(如:123)默认类型为 int
表达式的运算顺序
public class MyFirst {
int a = 1;
public void xxx() {
int b = 2;
System.out.println(a);
}
public void yyy() {
int a = 3;
System.out.println(a);
}
}
上述代码中a变量是在class的 { } 中定义的,它的作用域就是这个class内,任意位置都可以访问而变量b是在方法xxx的 { } 中声明的,它作用域就只限于xxx方法中;
在两个不同作用域范围下如果出现同名称变量时;则作用范围小的变量在其作用域内会覆盖作用范围大的变量,上述例子中方法yyy的 { } 中的变量和类中的变量同名,都为a,那么在方法yyy内,a变量的值以方法内声明为准。
import java.util.Scanner;//这句代码不能少
public clsss Test{
public static void main(String[] args){
//创建一个可以从键盘读取数据的扫描器
Scanner sc = new Scanner(System.in);
// 从键盘读取输入的int型的整数。并把读取到整数存储到变量num中
int num = sc.nextInt();
// 从键盘读取输入的String类型。并把读取到整数存储到变量name中
String name = sc.next();
//从键盘读取输入的Double类型。并把读取到整数存储到变量salary中
double salary = sc.nextDouble();
System.out.println(num);
}
}
Scanner的练习:
1,获取键盘输入,输入姓名,年龄,性别
2, 吃饭 点了2个菜 西红柿鸡蛋, 16d 红烧鱼 24d
打折: 0.8折 打印总价多少,实际结算给多少钱?
作业:
初始化a=3,b=4;交互a,和b的值:
初始化a=3,b=4;计算下面3个表达式。
a = a-b;
b = a+b;
a = a-b;
用户输入四位会员号:计算四位会员号的之和(个位,十位,百位,千位上数字求和).提示从键盘读取整数的代码如下:
import java.util.Scanner;//这句代码不能少
public clsss Test{
public static void main(String[] args){
//创建一个可以从键盘读取数据的扫描器
Scanner sc = new Scanner(System.in);
// 从键盘读取输入的int型的整数。并把读取到整数存储到变量num中
int num = sc.nextInt();
System.out.println(num);
}
}