搜档网
当前位置:搜档网 › 毕向东 第1-2天 java基本常识

毕向东 第1-2天 java基本常识

基础常识
软件开发
人机交互方式
常用的DOS命令
软件开发
什么是软件?
软件:一系列按照特定顺序组织的计算机数据和指令的集合。
常见的软件:
系统软件:
如:DOS,windows,Linux等。
应用软件:
如:扫雷,迅雷,QQ等。
什么是开发?
制作软件
人机交互:
软件的出现实现了人与计算机之间的更好的交互。
交互方式:
图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。
命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
dos命令行,课程中常见的命令。
dir : 列出当前目录下的文件以及文件夹
md : 创建目录
rd : 删除目录
cd : 进入指定目录
cd.. : 退回到上一级目录
cd/ : 退回到根目录
del : 删除文件
exit : 推出dos命令行
计算机语言
通过DOS命令行的演示,发现原来操作计算机就如同和计算机说话一样。
我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以。这就是计算机语言。
什么是计算机语言?
语言:是人与人之间用于沟通的一种方式。
例如:中国人与中国人用中文沟通。
而中国人要和韩国人交流,就要学习韩语。
计算机语言:人与计算机交流的方式。
如果人要与计算机交流,那么就要学习计算机语。
计算机语言有很多种,如:C,C++,Java等。
这里,我们选择其中的一种:Java语言。
Java语言概述
是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。
是一种面向Internet的编程语言。
随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Java语言的特点:跨平台性
什么是跨平台性?
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
原理是什么?
只要在需要运行java应用程序的操作系统上,
先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
由JVM来负责Java程序在该系统中的运行。
因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
什么是JRE,JDK?
JRE(Java Runtime Environment Java运行环境)
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等

简单而言:使用JDK开发完成的java程序,交给JRE去运行。

当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果还没有找到,就出现错误提示。
所以进入到 jdk安装路径\bin目录下,执行javac。看到javac参数提示信息。
每次执行java的工具都要进入到bin目录下,是非常麻烦的。
可不可以在任何目录下都可以执行java的工具呢?
根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到path环境变量中,让系统帮我们去找运行执行的程序。
我的电脑--属性--高级--环境变量
编辑path环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。
打开DOS命令行,任意目录下敲入javac。
如果出现javac 的参数信息,配置成功。
这种配置方式,一劳永逸。
临时配置方式:通过dos命令中set命令完成
set :用于查看本机的所有环境变量的信息。
set 变量名 :查看具体一个环境变量的值。
set 变量名=:清空一个环境变量的值。
set 变量名=具体值 :给指定变量定义具体值。
想要在原有环境变量值基础上添加新值呢?
首先,通过%变量名%操作符获取到原有环境变量的值。
然后加上新值后在定义给该变量名即可
举例:给path环境变量加入新值
set path=新值;%path%
注意:这种配置方式只在当前dos窗口有效。窗口关闭,配置消失

为了不因为jdk的目录或者目录名称的改变,而不断更改path的值,而导致对path变量值的误操作,可以通过以下技巧完成。
新创建一个环境变量 JAVA_HOME 记录住jdk的目录。
在path中通过%%动态的获取JAVA_HOME的值即可。
JAVA_HOME=F:\jdk1.6.0_01
path=%JAVA_HOME%\bin;%path%

%path%:动态获取path环境变量的值。
%JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。
既然class文件(字节码文件)是java的运行文件,可不可以实现,在任意目录下都可以执行某一目录下的class文件呢?
根据path环境变量的原理,可以定义一个名为classpath环境变量,将要运行的class文件所在目录定义在该变量中。
例:set classpath=c:\
classpath变量值是java类文件的目录
path变量是windows程序文件的目录
JVM查找类文件的顺序:
如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。
如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。
值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。
值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前

目录下查找,即使当前目录下有,也不会运行。
建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示。


public class ---{
}
public可以不加,加上了就要保证java名和class名一致,提升权限作用。

可以像配置java工具集bin环境变量的那样给java 类文件class配置环境变量。这样配置即可在使dos在任何文件夹的情况下运行该class文件。配置也分临时配置和永久配置。
清空临时环境变量设置,只需set classpath=(后面什么也不写即可)
虚拟机启东时先找环境变量里的路径。如果设置环境变量时后面加上分号,虚拟机在环境变量路径下如果找不到运行的class文件,将会从当前文件夹中寻找,如果不加分号,那么将不会从当前文件夹中寻找。另classpath可以设置多个文件夹,排在前面优先寻找。如果单独设置个路径为点,那么表示是当前路径。以上是classpath的设置属性,而path则相反,它是先从当前找,找不着再从环境变量中寻找。对于可执行文件 一般用path配置

jdk中有一种java独有的注释,/** */,这种注释可以单独生成文档说明书。
多行注释不能嵌套多行注释。
任何程序的编写,上来先注释,需要注释的内容是:需求 思路 步骤 如:

四、标识符,在程序中自定义的一些名称,由26个字母的大小写、0~9、_ $
注意:数字不可以开头,不可以使用关键字。
main不是关键字但是可以被虚拟机识别。
类名接口名多单词组时所有字母都小写。
变量名和函数名多单词组成时,第一个单词首字母小写,第二个单词开始首字母全大写。
常量名,所有字母都大写。多单词连接用下划线连接。
常量里面有一个null常量,只有一个数值null ---空

八进制既是二进制数三位代表一位。
十六进制既是二进制数四位代表一位。0x开头。
一个整数有四种表现形式,二进制、八进制、十进制、十六进制。

十进制转二进制数,原理:既是对十进制进行除2运算。取余数(从右往左写。)或者用计算器直接生成计算,或者在JAVA 程序里输出Integer.toBinaryString(十进制数);这样可以直接查看。
二进制转十进制:原理。二进制乘以2的过程,如二进制数110转换为十进制数则为0*2(0)+1*2(1)+1*2(2)=6.
一个字节即为8位二进制数,一个字节所能达到的最大数值即11111111转换为十进制数是255,IP地址的就是用1个字节.一个字节.一个字节.一个字节表示的。

其他进制转换:十进制转十六进制,现将十进制转换为二进制,然后四个二进制位即为一个十六进制位,4个位为一组,转换为十进制,10——15用A-F来记载,然后前边加一个0x即可。八进制

同理,即为3个二进制位代表一个八进制位。如果遇到位数不够的可以用0来补。

负数的二进制表现形式:如6的二进制为110,-6的二进制其实就是6的二进制取反+1
取反:将2进制的1变成0,0变成1.
在计算机内存中,6的表现形式其实是4个字节,即00000000 00000000 00000000 00000110
取反后变成11111111 11111111 11111111 11111001
再加上1,而1的表现形式为00000000 00000000 00000000 00000001
二者相加得11111111 11111111 11111111 11111010=-6
可以看出 负数二进制的最高位为1

变量:就是讲不确定的数据进行存储,也就是需要在内存中开辟一个空间。开辟空间是通过明确数据类型,变量名称,数据来完成。

数值型 包含整数类型(byte,short,int,long)和浮点类型(float单精度,double双精度)
基本数据类型 字符型 char
数据类型 布尔型boolean


引用数据类型 包含类class 借口 interface 数组[]
byte 是内存中开辟8个二进制位,存储数值范围为-128~~127之间,short是开辟16个二进制位,-32768~~32767,int 开辟32个二进制位,long开辟64个二进制位(天文数字),整数默认int,小数默认double。float占4个8位,double占8个。char类型在内存中占2个8位。


long a=4l;float b=2.3f;后面一定要跟标识。不然编译会出错。

类型转换:两个不同类型的数据进行运算,会进行自动类型提升,提升为一种数据类型后才能进行运算。如byte与int类型运算,会以大的为主,小的向大的提升。
如 System.out.print('a'+1);结果将输出98,因为a是一个字符型,它在内存中原本占两个8位,但是一和整数型的1相加后,会自动提升类型,变成了4个8位,而a在ASC表中是以97来存储的,类型一提升导致数值体现了出来。而如果将这个98强制转换为char类型,即(char)('a'+1),则输出结果将为b,因为b在ASC表中是以98来存储的。

另 int x=4270; x=x/1000*1000;那么x的输出值将会是4000。原因是x是int型,1000是int型,两者相除会将小数点后的值舍去仍保持int型。

取模运算中 如果左边小于右边,那么结果为左边,如果取模运算当中出现负数,那么结果为左边。

int a=3,b; b=a++;那么输出结果为a=4,b=3;因为a++的特点是先使用再自身加1.也就是说先去给b赋值,再自身加1.
int a=3,b; b=++a;那么输出结果为a=4,b=4;因为++a的特点是先自身加1再使用.也就是说先自身加1,再去给b赋值

转义字符:通过\ 来转变后面的字母或者符号的含义。如\n \t \b--退格 \r--按下回车键,在window中,回车符是由两个字符来表示的\r\n

如果想输出带双引号的字符串,应该这样输出,System.out.print("/"我是周麟/"");不能写成(""我是周麟"");
如果想输出带反斜线的字符串,应该这样

输出,System.out.print("//我是周麟//");

一个汉字为2个字节。

x+=4;--x=x+4 -= *= /= %=同理
小例子 short a=4;a=a+5;这个是编译出错的,因为第二个式子会进行两次运算,结果会自动提升为int类型。
而short a=4;a+=5;这个是成立的,因为第二个式子只进行一次运算。内部会强制转换为short.

逻辑运算符用来连接boolean型的表达式。
&--与 只要两边的布尔表达式结果有一个为false,那结果就为flase.
|--或
!--非
^--异或 就是和|有点不一样,当true^ture=false 两边相同结果为false,两边不同结果为true.


位运算符 用于二进制的计算,如3<<2,将3转换为内存中的二进制。
00000000 00000000 00000000 00000011
移完以后
000000 00000000 00000000 0000001100
结果为12.
规律:3<3>>x====3/2(x);
左移<<就是乘以2的移动位数次幂。
右移>>就是除以2的移动位数次幂。 统称带符号右移,既是移完以后,高位空缺,原最高位是几就补几。
>>> 无符号右移 统称无符号右移,既是移完以后,高位空缺,全都补0.
& 也可作为位运算符号,如6&3,表示110&011 把 0看成假,把1看成真,对应位相加得出010.即为2
| 也可作为位运算符号,同理。
^ 也可作为位运算符号,同理。
~ 反码 位运算符~6=-7
对于6的二进制数为0000-0000 0000-0000 0000-0000 0000-0110
取反以后为1111-1111 1111-1111 1111-1111 1111-1001
对于这个数,怎么得出他的十进制呢。
首先可以确定他是个负数,那么想得出他的十进制数 ,那么可以进行逆向操作,先给他减1,然后取反,得出的十进制数既是这个负数的绝对值。
1111-1111 1111-1111 1111-1111 1111-1001
-0000-0000 0000-0000 0000-0000 0000-0001
=1111-1111 1111-1111 1111-1111 1111-1000
~0000-0000 0000-0000 0000-0000 0000-0111=7
那么这个数就是-7

7^x^x=7 一个数异或同一个数2次,结果还是那个数。可以用来对数据进行加密。

位运算符练习
1、最有效率的方式算出2乘以8等于几。
2*8运算的实质是1000
*0010
-----
0000
1000
--------
10000=16
效率不高,通常所说的高效率运算,指的就是位运算。2<<3.

2、对两个整数变量的值进行互换(不需要第三方变量)
n=n+m m=n-m n=n-m 三个式子便将m n 的值互换了。
以上式子有局限性,如果m和n的值非常大。容易超出int范围。


方法2:n=n^m m=n^m//(n^m)^m n=n^m//n^(n^m)

60=0000-0000 0000-0000 0000-0000 0011-1100 取该数的十六进制
让60&15
即0000-0000 0000-0000 0000-0000 0011-1100
& 0000-0000 0000-0000 0000-0000 0000-1111
---------------------------------------------
0000-0000 0000-0000 0000-0000 0000-1100=12
然后60>>4
0000 0000-0000 0000-0000 0000-0000 0011 (-1100)
& 0000-0000 0000-0000 0000-0000 0000-

1111
然后再& 以次类推。
代码形式

int num=60;4
//获取60的最低四位,通过&15;
num&15=12;
((num>9)?(char)(12-10+'A'):num)
//要获取下一组四位,将60右移4位
int temp=60>>4;
//对temp的值进行最低四位的获取。
temp&15=3;

三元运算符:(条件表达式)?表达式1:表达式2;
如果条件表达式为真,那么执行表达式1
如果条件表达式为flase,那么执行表达式2





















相关主题