黑马程序员-1.java入门小知识

来源:互联网 发布:windows触摸屏输入法 编辑:程序博客网 时间:2024/05/24 16:16

------- android培训java培训、期待与您交流! ----------

摘要:首先介绍关于Java的基本常识、常用DOS命令以及path与classpath的配置,然后详细说明Java语言的基本构成:标识符、常量、运算符、程序流程控制语句、函数和数组等方面的内容。

-----------------------------------------------------------------------------------------------------------------------------------------

1.1基础常识

常见软件分类: a)系统软件 b)应用软件

人机交互方式: a)图形化交互 b)命令行交互

常用DOS命令:

a)dir:列出当前目录下的文件或文件夹;

b)md:创建目录;c)rd:删除目录;

d)cd:进入指定目录;(在win7系统中进入某个盘(C盘D盘E盘F盘等等)不用cd,直接按盘符回车即可。比如F:回车)

e)cd ..:退回到上级目录;f)cd\:退回到根目录;g)del:删除文件;

h)exit:退出DOS命令行;

-----------------------------------------------------------------------------------------------------------------------------------------

Java语言三种技术构架

a)J2EE:为开发企业环境下的应用程序提供解决方案,主要针对web应用程序开发。

b)J2SE:为开发普通桌面和商务应用程序提供解决方案,可完成桌面应用程序开发。

c)J2ME:未开发电子消费产品和嵌入式设备提供解决方案,主要应用于小型电子消费类产品。

注意:Java5.0后更名为JAVAEE、JAVASE、JAVAME。

-----------------------------------------------------------------------------------------------------------------------------------------

JRE与JDK a):JRE:Java运行环境 ①虚拟机 ②核心类库。

b):JDK:Java开发工具包 ①编译工具javac.exe ②打包工具jar.exe。

-----------------------------------------------------------------------------------------------------------------------------------------

配置环境变量

路径:我的电脑→高级→Path(外部命令搜索路径)

a)固定路径配置: D:\Java\jdk1.8.0_05\bin+";"

b)动态路径配置: ①新建→变量名:JAVA_HOME 变量值:D:\Java\jdk1.8.0_05\

②Path变量值→%JAVA_HOME%\bin;

c)临时路径配置:特点:①DOS中配置 ②当前窗口有效。

   方法:set path=D:\Java\jdk1.8.0_05\bin

注意: ①加入新值:set path=新值;%path%

②环境变量清空:set path=

③DOS中通过start开启新窗口,会沿袭前一窗口环境变量值。

-----------------------------------------------------------------------------------------------------------------------------------------

配置classpath

a) 临时路径配置:set classpath=配置路径

环境变量清空:set classpsth=

注意:配置classpath时,结尾处通常不加“ ; ”,若需访问当前目录可用“ · ”表示。目录结尾处若加分号,在classpath目录下没有找到指定文件,会在当前目录下查找;若无分号,则不会再当前目录下查找,即使当前目录下存在class文件,亦不会运行。

b)固定路径配置:变量名:classpath 变量值:配置路径

path与classpath的区别:  ①path优先查找当前目录,然后查找配置路径。

②classpath优先查找配置路径,然后查找当前目录。

-----------------------------------------------------------------------------------------------------------------------------------------

Java程序开发

a)*.java表示源文件。

b)*.class表示运行文件。

c) ①编写class Demo{}保存为Demo.java文件;

注意:class前加public时必须保证类名、文件名统一。

②编译:javac Demo.java(文件名)

③运行:java.Demo(类名)

-----------------------------------------------------------------------------------------------------------------------------------------

注释 a)单行注释 //注释文字

b)多行注释 /*注释文字*/

c)文档注释 /**注释文字*/

-----------------------------------------------------------------------------------------------------------------------------------------


1.2Java语言基本构成

基本构成:关键字、标识符、注释、变量和常量、运算符、语句、函数、数组。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.1标识符

定义: 程序中自定义的名称。

规则: a)数字不可以开头 b)不可以使用关键字。

构成: 英文字母、数字、下划线_、美元$符号

Java中名称规范:

a)包名:多单词构成时,字母小写。

b)类名、接口名:多单词构成时,首字母大写。

c)变量名、函数名:多单词构成时,首单词字母小写,第二单词开始各单词首字母大写。

d)常量名:字母均大写,多单词间下划线连接。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.2常量

分类:整数、小数、布尔型、字符型、字符串型、null

整数表现形式:二进制、十进制、八进制(0开头)、十六进制(0x开头)

-----------------------------------------------------------------------------------------------------------------------------------------

进制转换

a)十进制转二进制

原理:对十进制数进行除2运算取余数进行倒序排列。

示例:十进制6转换成二进制,结果是110。

被除数  计算过程商 余数 66/23 0 33/211 11/20 1 

b)二进制转十进制

原理:以最后一位计算,一次列为0、1、2……n位的数,分别乘以2的几位次方并求和。

示例:110转换成十进制结果是6。

    0×2^0+1×2^1+1×2^2=6

c)二进制转十六进制

原理:整数部分自右向左,每4位为一组,不组4位时高位左边补0,每4位写出对应十六进制数码。

d)十六进制转二进制

原理:用十六进制数码对应的4位二进制数码代替十六进制数码。

e)二进制转八进制

原理:同理二进制转十六进制,每3位数码为一组。

f)八进制转二进制

原理:同理十六进制转二进制,每3位数码为一组。

g)负数二进制

原理:其正数的二进制取反,再加1。

示例: 整数6在内存中占4个字节。

表现形式:0000-0000 0000-0000 0000-0000 0000-0110

取反值为:1111-1111 1111-1111 1111-1111 1111-1001

加 1 值为:1111-1111 1111-1111 1111-1111 1111-1010

结果为-6的二进制表现形式。

注意:负数的最高位均为1。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.3变量

数据类型: a)基本数据类型:数值型、字符型(char)、布尔型(boolean)。

数值型:①整数类型(byte、short、int、long) ②浮点型(float、double)

注意: ①char类型中可以存放中文 ②整数默认int,小数默认double

b)引用数据类型:类(class)、接口(interface)、数组([ ])

示例:byte b=3;

b=(byte)(b+2);

其中b为byte型,2为int型,(b+2)为int型,需要转换为byte型赋给b。

注意: byte、short、char的值均可自动提升为int型。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.4运算符

算数运算符

分类: +(正号)、-(负号)、+(加号)、-(减号)、*(乘号)、/(除号)、%(取模)、

++(自增)、--(自减)、+(字符串相加)

注意:①Java中存在负数的取模运算,结果的正负号与被模数的正负号相同。

示例:-6%5=-1

②字符串数据和任何数据使用”+“都是相连接,最终都会变成字符串。

示例;"5+5"+(5+5)=5+510

-----------------------------------------------------------------------------------------------------------------------------------------

转义字符

常用: \n:换行 \b:退格 \r:回车 \t:制表符

示例: “\”Hello“\”打印结果为“Hello”

-----------------------------------------------------------------------------------------------------------------------------------------

赋值运算符

分类: =、+=、-=、*=、/=、%=

注意: short型s在s=s+5和s+=5的区别为①s=s+5编译失败,因为s会被提升为int型,运算后结果仍为int型,无法赋值给short型。②s+=5编译通过,因为+=运算符在给s赋值时,自动完成强转操作。

-----------------------------------------------------------------------------------------------------------------------------------------

比较运算符

分类: ==、!=、<、>、<=、>=

-----------------------------------------------------------------------------------------------------------------------------------------

逻辑运算符

分类: &、 | 、^、!、&&、| |

&与&&的区别: ①单&时,左边无论真假,右边都参与运算。

②双&时,左边为真,右边参与运算;左边为假,右边不参与运算。

| 与 | | 的区别: 同理,双 | 时,左边为真,右边不参与运算。

&: 两边有一个为false,结果为false;两边都为true,结果为true。

| : 两边有一个为true,结果为true;两边都为false,结果为false。

^ : 两边相同结果为false,两边不同结果为true。

-----------------------------------------------------------------------------------------------------------------------------------------

位运算符

分类: <<(左移)、>>(右移)、>>>(无符号右移)、&(与运算)、|(或运算)、

^ (异或运算)、~(取反)

注意: ①<<:空位补0,被移除的高位丢弃;

②>>:二进制最高位是0,右移后,空位补0;最高位是1,空位补1。

③>>>:被移的二进制最高位无论是0或1,空位补0。

④-n的二进制表现形式为n取反,再加1(n为正整数)。

⑤一个数^同一个数两次仍为原数:m^n^n=m。

示例: m<<n等价于m×2^n;m>>n等价于m×(1/2)^n

-----------------------------------------------------------------------------------------------------------------------------------------

三元运算符

格式: (条件表达式)?表达式1:表达式2

               表达式为真执行表达式1,否者执行表达式2。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.5程序流程控制

分类: 判断结构、选择结构、循环结构

-----------------------------------------------------------------------------------------------------------------------------------------

判断结构

if(条件表达式){if(条件表达式){

执行语句;执行语句;

}}

if(条件表达式){else if(条件表达式){

执行语句;执行语句;

}}

else{……

执行语句;else{

}执行语句;

}

-----------------------------------------------------------------------------------------------------------------------------------------

选择结构

switch(表达式){

case 取值1

执行语句;

break

case 取值2

执行语句;

break

……

default

执行语句;

break

}

注意:①switch语句在JDK1.5之前只支持四种数值的判断,分别为:byte,short,int和char,JDK1.5开始支持对枚举类型变量的判断,JDK1.7开始支持对String类型变量的判断。

②case与default没有顺序,先执行第一个case,没有匹配的case执行default。

③switch结束的情况:遇到break;执行到switch语句结束。

④若匹配的case或default无对应break,程序会继续向下执行,运行可以执行的语句,直到遇到break或switch语句结束。

if与switch语句的选择:①若判断数值不多,而且符合byte、short、int、char四种类型,使用switch效率高。②对区间判断,结果为boolean类型,if的应用范围广。

-----------------------------------------------------------------------------------------------------------------------------------------

循环结构

while(条件表达式){do{

执行语句;执行语句;

}}while(条件表达式)

for(初始化表达式;循环条件表达式;循环后操作表达式){

执行语句;

}

注意:①for内表达式的运行顺序:初始化表达式仅读一次判断循环条件,为真则执行循环体,然后在执行循环后的操作表达式,接着继续判断循环条件,重复整个过程,直到不满足条件为止。

②while与for的区别:for为循环定义的变量在循环结束后内存中释放;while为循环定义的变量在循环结束后仍可使用。

③while(true),for(;;)为无限循环的原因:并不知道循环次数而是根据特定条件控制循环。

④多表达式同时出现时可用逗号分开。

嵌套循环:九九乘法表

public class Demo {public static void main(String[] args) {for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+i*j+"\t");}System.out.println();}}}

注意:外层循环控制行,内层循环控制列。

-----------------------------------------------------------------------------------------------------------------------------------------

其他流程控制语句

continue语句: 结束本次循环继续下次循环。

break语句: 跳出循环语句或选择语句。

注意: 注意标号的出现,可让两个语句作用于指定的范围。

class Demo{public static void main(String[] args){w:for(int x=0;x<3;x++){q:for(int y=0;y<4;y++){System.out.println("x="+x);break w;}}}}

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.6函数

定义格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2…){

执行语句;

return返回值;

}

注意: ①当函数运算后,没有具体的返回值,返回值类型用关键字void来标识。

②函数只能调用函数,不可在函数内部定义函数。

③定义函数时,函数的结果应返回调用者,并由其处理。

函数的重载(overload): 在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或参数类型不同即可。重载与返回值类型无关。

示例: void show(int a,char b,double c){}与double show(int x,char y,double z){}不发生重载,因为两个函数不可能同时存在同一个类中。

-----------------------------------------------------------------------------------------------------------------------------------------

1.2.7数组

定义: 同一种类型数据的集合。

格式: ①元素类型[ ] 数组名=new 元素类型[元素个数或数组长度];

②元素类型[ ] 数组名=new 元素类型[ ]{元素,元素,……};

简化形式:元素类型[ ] 数组名={{元素,元素,……};

Java内存结构: 栈内存、堆内存、方法区、本地方法区、寄存器。

栈内存: 存储局部变量,数据使用完,占用空间自动释放。

堆内存: ①数组和对象,通过new建立的实例存在堆内存中。

②每个实体均有内存地址值。

③实体中变量均有默认初始值,依据数组元素类型确定。

④实体不在被使用,会在不确定时间内被垃圾回收器回收。

常见异常: ①数组角标越界异常(ArrayIndexOutOfBoundsException)

    访问数组不存在的脚标时发生。

②空指针异常(NullPointerException)

    数组引用没有指向实体,却在操作实体中的元素时发生。

-----------------------------------------------------------------------------------------------------------------------------------------

数组遍历

class ArrayDemo{public static void main(String[] args){int[] arr={3,4,5,6,7};for(int x=0;x<arr.length;x++){System.out.println(arr[x]);}}}

注意:System.out.println(arr);的结果为[I@de6ced时,“[”指arr时数组类型的引用;“I”指arr中存放的为整形数据;“ de6ced”指数组内存地址,由哈希算法计算出的十六进制地址值。

-----------------------------------------------------------------------------------------------------------------------------------------

获取最值

public static int getMax(int[] arr){int max=arr[0];for(int x=0;x<arr.length;x++){if(arr[x]>max)max=arr[x];}return max;}

注意:①int max=0;也可以,将max初始化为数组中的0角标。

②boolean型数组默认为false。

-----------------------------------------------------------------------------------------------------------------------------------------

位置置换

public static void swap(int[] arr,int a,int b){int temp=arr[a];arr[a]=arr[b];arr[b]=temp;}

-----------------------------------------------------------------------------------------------------------------------------------------

折半查找:数组必须为顺序排列。

public static int halfSearch(int[] arr,int key){int min,mid,max;min=0;max=arr.length-1;mid=(max+min)/2;while(arr[mid]!=key){if(key>arr[mid])min=mid+1;else if(key<arr[mid])max=mid-1;if(min>max)return -1;mid=(min+max)/2;}return mid;}

-----------------------------------------------------------------------------------------------------------------------------------------

数组排序

Java中已经定义的排序方式:Arrays.sort(arr);

a)选择排序

思想: 指定排序位置与其他元素对比,如果满足条件就交换元素值。

public static void selectSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=x+1;y<arr.length;y++){if(arr[x]>arr[y]){int temp=arr[x];arr[x]=arr[y];arr[y]=arr[x];}}}}

b)冒泡排序

思想: 相邻的两个元素比较,如果符合条件就交换元素的值。

public static void bubbleSort(int[] arr){for(int x=0;x<arr.length-1;x++){//-x让每次比较的元素减少;-1避免角标越界;for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}}

-----------------------------------------------------------------------------------------------------------------------------------------

进制转换

注意: 字符数组被定义后默认初始化值为'\u0000'

//十进制转二进制Integer.toBinarySting(int i);//十进制转八进制Integer.toHexString(int i);//十进制转十六进制Integer.toOctalString(int i);

</pre><pre name="code" class="java">import java.util.Scanner;class Demo{static char chs[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};static int pos=0;static char[] a=new char[32];static void change(int num,int yuwho,int offset){while(num!=0){int temp=num&yuwho;a[pos++]=chs[temp];num=num>>>offset;}for(int i=pos-1;i>=0;i--){System.out.print(a[i]+" ");}System.out.println();}public static void main(String args[]){System.out.println("请输入一个十进制数");Scanner in=new Scanner(System.in);int num=in.nextInt();System.out.println("请选择要将它转换成的进制数,输入1转换为二进制,输入2转换为八进制,输入3转换为十六进制");int choice=in.nextInt();switch(choice){case 1:change(num,1,1);break;case 2:change(num,7,3);break;case 3:change(num,15,4);break;default:return;}}}

-----------------------------------------------------------------------------------------------------------------------------------------

二维数组

格式: 类型说明符[ ][ ] 数组名=new 类型说明符[常量表达式][常量表达式]

定义方式:     int[ ][ ] y   int y[ ][ ]   int[ ] y[ ]

注意:     二维数组中每个以为数组的默认初始化值为null

示例:     int[ ][ ] arr=new int[3][ ]对二位数组中的三个一维数组分别初始化:

arr[0]=new int[3];

arr[1]=new int[2];

arr[2]=new int[1];

------- android培训java培训、期待与您交流! ----------

0 0
原创粉丝点击