黑马程序员-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 1b)二进制转十进制
原理:以最后一位计算,一次列为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语句在JDK1.5之前只支持四种数值的判断,分别为:byte,short,int和char,JDK1.5开始支持对枚举类型变量的判断,JDK1.7开始支持对String类型变量的判断。switch(表达式){
case 取值1:
执行语句;
break;
case 取值2;
执行语句;
break;
……
default:
执行语句;
break;
}
②case与default没有顺序,先执行第一个case,没有匹配的case执行default。
③switch结束的情况:遇到break;执行到switch语句结束。
④若匹配的case或default无对应break,程序会继续向下执行,运行可以执行的语句,直到遇到break或switch语句结束。
if与switch语句的选择:①若判断数值不多,而且符合byte、short、int、char四种类型,使用switch效率高。②对区间判断,结果为boolean类型,if的应用范围广。
-----------------------------------------------------------------------------------------------------------------------------------------
循环结构
注意:①for内表达式的运行顺序:初始化表达式仅读一次判断循环条件,为真则执行循环体,然后在执行循环后的操作表达式,接着继续判断循环条件,重复整个过程,直到不满足条件为止。①while(条件表达式){②do{
执行语句;执行语句;
}}while(条件表达式)
③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)
数组引用没有指向实体,却在操作实体中的元素时发生。
-----------------------------------------------------------------------------------------------------------------------------------------
数组遍历
注意:System.out.println(arr);的结果为[I@de6ced时,“[”指arr时数组类型的引用;“I”指arr中存放的为整形数据;“ de6ced”指数组内存地址,由哈希算法计算出的十六进制地址值。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]);}}}
-----------------------------------------------------------------------------------------------------------------------------------------
获取最值
注意:①int max=0;也可以,将max初始化为数组中的0角标。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;}
②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)选择排序
思想: 指定排序位置与其他元素对比,如果满足条件就交换元素值。
b)冒泡排序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];}}}}
思想: 相邻的两个元素比较,如果符合条件就交换元素的值。
-----------------------------------------------------------------------------------------------------------------------------------------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培训、期待与您交流! ----------
- 黑马程序员-1.java入门小知识
- 黑马程序员10--java加强小知识
- 黑马程序员-java基础-基础小知识
- 黑马程序员—java入门的知识
- 黑马程序员-----------小知识
- 黑马程序员:java中集合的一些小知识
- 黑马程序员-----------快速了解java基础小知识
- 黑马程序员——小白入门之Java概述
- 黑马程序员-java入门
- 黑马程序员-java入门
- 黑马程序员--java 知识回顾
- 黑马程序员-----------java语法知识
- 黑马程序员:Servlet的一点小知识
- 黑马程序员--Winform有关的小知识
- 黑马程序员—SQL基础小知识
- 黑马程序员--代码块小知识总结
- 黑马程序员_java中的小知识
- 黑马程序员-ArrayList与HashSet小知识
- JavaScript的null和undefined区别
- /etc/hosts文件作用
- 排序算法
- UVA - 10340 All in All(水题)
- 【博弈】 HDOJ 4994 Revenge of Nim
- 黑马程序员-1.java入门小知识
- Looper的使用
- 致我们终将忘记的算法(广度和深度优先搜索算法)
- Repeater VS 后台组织Htm
- TCP/IP socket
- LeetCode Permutations
- 第一题 定义分数(Fraction)类: 1、成员变量:分子、分母 2、方法: (1)自定义初始化方法(初始分子和分母) (2)分子的赋值、取值方法 (3)分母的赋值取值方法 (4)打印分数信息
- 【BZOJ】【BZOJ第7页题解】
- 矩阵旋转(含代码)