您的位置:首页 > 职场人生

黑马程序员——java概述和基础知识

2013-06-13 07:54 344 查看
————————————------- android培训java培训、期待与您交流! ----------

1、交互方式(图形化、命令行)

图形化:这种方式简单直观,使用者易于接受,容易上手操作。

命令行:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。

学习中经常遇到的命令

————dos命令行,课程中常见的命令

cd :进入一个目录

cd..:返回上一级目录

cd\:返回跟目录

dir:列出当前目录下的所有文件

start:打开另一个dos窗口,该窗口保留了当前窗口的配置环境

exit:退出dos命令窗口

md:创建一个目录

rd:删除一个目录,但是要保证该目录为空

del:删除文件

edit:在窗口中打开一个记事本

cls:清空当前窗口内容

盘符加冒号(比如D:):进入该盘符的根目录

2、Java语言概述,历史、特点

1)是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级语言。

2)是一种面向Internet的编程语言。

3)随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。

4)是简单易学,完全面向对象,安全可靠,与平台无关的编程语言

3、Java5.0之后分为三大技术架构JAVAEE JAVASE JAVAME的应用范围和特点?

3.1 J2EE(Java 2 Platform Enterprise Edition)企业版

在jdk5.0版本后称为JAVAEE,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。是传智播客就业班和黑马训练营的主要学习内容之一.

3.2 J2SE(Java 2 Platform Standard Edition)标准版

在jdk5.0版本后称为JAVASE,这是在java基础阶段主要学习的内容,也是java的基础,以后不管从事Android开发或者是物联网+云计算的开发,等是建立在JSE基础上的,因此该技术是java的最核心技术,是传智播客基础班的主要上课内容.

3.3 J2ME(Java 2 Platform Micro Edition)小型版

在jdk5.0版本以后称为JAVAME,该技术多应用于一些电子产品的嵌入式开发,以前在手机开发上应用的也比较多,但是随着智能手机的发展,现在手机应用程序(比如Android程序)的开发已经不再使用该技术

4、什么是跨平台性?原理是什么?JVM

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机).

5、Jre和jdk的区别?要能熟练的讲解出来。 核心类库,开发工具

JRE:(Java Runtime Environment),java运行环境。包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。

JDK:(Java Development Kit Java)开发工具包。JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等

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

JDK的下载和安装

JDK可以到甲骨文官网去下载。下载后的文件会自动安装,注意:安装路径不要有中文或者特殊符号 如空格等;当提示安装JRE时,可以选择不安装。

6、为什么要搭建环境变量,怎么搭载环境变量?

所谓环境变量就是计算机系统的执行程序所在的路径,搭载了环境变量就相当于告诉了系统可执行程序所在的路径(javac.exe、java.exe)

配置技巧:path= %JAVA_HOME%\bin (动态的获取某一个环境变量的值)

JAVA_HOME=路径名

我的电脑---属性----高级----环境变量

7、临时配置环境变量?

临时增加path的同时保存原有path方法 : set path=临时目录;%path%

Start可以另开一个dos窗口,延续上一个path

8、想在任何路径下都可以执行*.class文件。

可以配置环境变量。Set classpath= (等号后什么都不加会清空变量) 虚拟机先找环境变量路径,然后找当前路径下*.class -----------------------set classpath=某路径;set classpath=某路径(注意加;与不加的区别),

set classpath=.;某路径(.表示当前路径,这样的效果是先找当前路径,然后找某路径)

1)

javac -classpath的使用:

设置CLASSPATH: 这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件,。

不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为".").

现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果,一切正常, java命令通过CLASSPATH找到了.class文件!

2)

javac -path的使用:

设置PATH: 道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.)

3)

javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。

(1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java

(2).相对路径:javac -classpath ../junit3.8.1/Junit.javr Xxx.java

(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)

4)

总结:

(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类

(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)

9、Hello java 小程序的讲解,java区分大小写

10、代码注释,单行//,多行/* */,文档注释/** */

(单行注释可以添加单行注释,多行注释可以添加单行注释,多行注释不能添加多行注释)

文档注释在接下来会讲到,先跳过

11、代码的可读性,简洁,加注释,确定需求、思路、步骤

1、标识符的命名规则

下面总结的是java中名称的命名规则,虽然不具强制性,但是为了增加程序的可阅读性.因此在编写程序的过程一定要遵循命名规则.

1. 包名(package):多单词组成时所有字母都小写(行规是以公司网址倒着写、以便区分)。

2. 类名接口名(class and interface):多单词组成时,所有单词的首字母大写(“驼峰式”)。

3. 变量名和函数名(variable and function):多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。

4. 常量名(constant):所有字母都大写。多单词时每个单词用下划线连接。

2、Java是类强型语言

对于每一种数据都有明确的定义的数据类型,在内存中分配不同的大小空间数据类型分为基本数据类型和引用数据类型

基本数据类型指的是四种整数(byte占8位、short占16位、int占32位、long占64位)、两种小数(float占32位、double占64位)、布尔(boolean)、字符型(character)各种占内存空间的大小。

引用数据类型(类似于指针)指的是类、接口、数组、字符串。

3、基本数据类型的转换,掌握!!!

Byte b;b+=10与b =b+10的区别,自动提升和强制转换的区别。

1)自动类型提升

byte b = 5;

int x =6;

x = x + b;//b会自动提升为int类型进行运算

2)强制类型转换

byte b = 6;

b = b + 5;//报错

b = (byte)b+5;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b,注意可能损失精度

4、运算符回顾掌握

算术运算符(+ 、— 、* 、/ 、%)

赋值运算符(= 、+=、-=、*=、/=,、%=)

关系运算符(>、>=、<、<=、!=)

条件运算符(&&、||、!&、|、^)

位运算符(&、|、^、~、>>、<<、<<<、>>>)

l 需要注意的是 :

&与&&(条件与、短路与)的区别:第一个操作数 为真时才判断第二个操作数。

|与||(条件或、短路或)的区别:第一个操作数为真时不再判断第二个操作数。

l 注意:按二级制进行操作、效率高。

>>、>>>后者是无符号右移、右移时符号位填充的都是0

y<x相当于乘以2的x次方

Y<x相当于除以2的x次方

^符号的作用(加密……、一个数异或一个数两次还是原来的数)。

l 三元运算符(?:)

格式

• (条件表达式)?表达式1:表达式2;

• 如果条件为true,运算后的结果是表达式1;

• 如果条件为false,运算后的结果是表达式2;

5、字符串和任何数据都是用+号相连,最终都会变为字符串

例:System.out.Print(5+5+”=”+5+5);

//转义字符\的应用(\n回车符 \b退格 \r回车键 \t制表符 )

6、对两个整数变量的值进行互换的方法。

通过第三方变量

Int temp = n;

n = m;

m = temp;

异或方法(n = n^m ; m = n^m ; n = n^m)、

n = n ^ m;

m = n ^ m;//(n^m)^m;

n = n ^ m;//n ^ (n ^ m)

加减法(当int值大时容易溢出)

n = n + m;//如果n和m的值非常大,容易超出int范围。

m = n - m;

n = n - m;

最长用的还是通过第三方变量

7、进制转换

二进制(binary)、八进制( octonary )、十六进制(hexadecimal)

进制的由来.......

十进制转二进制、八进制、十六进制代码实现:

class TransDemo {

public static void main(String[] args) {

trans(60,2);//调用转换方法

}

static void trans(int a,int radix){

int temp = a;

char [] cha = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};//查表法,所以建一个数组存储所用到的字符

StringBuilder sb = new StringBuilder();//字符串容器

while(a>0){

sb.insert(0, cha[a%radix]);//循环过程中,在容器的0位置插入,容器长
度加一

a>>=(int)(Math.log(radix)/Math.log(2));//获取位移位数,二进制为1,八进制为3,十六进制为4

}

System.out.println(temp+"转换为"+radix+"进制为"+sb.toString());

}

}

8、java中的控制语句

判断语句、循环语句、选择语句

Ø 判断语句

If语句的三种格式:

If( 条件语句condition ){

代码块 statement//加上大括号用于执行多条语句

}

——————————

If( condition){

statement

}else{

statement

}

——————————

If( ){

}else if( ){

} else{

}

Ø 循环语句(for;while;do while)

For(初始化表达式;判断表达式;修改循环变量值){

statement

}

While(条件表达式){

循环代码块

}

Do{

循环代码块

}while(条件表达式)

² For(;;){//最简单的无限循环,条件默认为true

}

² do while 先执行一次再判断

² For与while的区别:基本可以通用,但是一点,for内定义的变量,出了代码块,内存就将其释放,节约内存。

Ø 选择语句(switch)

格式:switch(标签)//整数或枚举类型

{

Case 标签:statement;break;

Case 标签:statement;break;

Case 标签:statement;break;

Default :statement

}

² 注意:switch的执行顺序和有无break的区别,代码:

{

public static void main(String[] args)

{

show(0);//打印的是15

show(1);//打印的是14

}

public static void show(int i)

{

switch(i)

{

default:

i+=2;

case 1:

i+=1;

case 4:

i+=8;

case 2:

i+=4;

}

System.out.println("i="+i);

}

}

Ø break和continue

1)Break(中断控制流程语句):

用于跳出其所在的最内层的循环体;

带标签的可以跳出多重循环体,伪代码

abc :

For(...){

While( ...){

If( ...) break abc;

....

}

}

2)continue语句不跳出所在的循环体,而是中断执行当前循环的剩余部分,并进入下一轮循环。

求解:0~100之间偶数的和

代码如下

Public class SumDemo{

Int sum = 0;

For( int i = 0;i<= 100;i+=){

If(i%2!=0)

Continue;

Sum+=i;

}

System.out.println(sum);

}

9、数组

数组的初始化:

静态初始化:

第一种方式:int[] arr = {1,2,3,4,5}

第二种:int[] arr1 = new int[]{1,2,3,4,5}

动态初始化:

就是new出一个数组后,再用add方法添加

l 数组长度一经初始化不可改变。

l 数组的长度是属性arr.length//打印长度为5

l 二维数组

Int[][] arra = {{1,2,34},{5,67}{234,57}}

int[][] arr2 = new int[3][ 3]

理解为数组的数组,arr2中有3个一维数组元素,每个数组元素又有三个子元素。把他想做指针就容易理解了。

学习情况总结

这部分掌握情况好,可以接下来复习下一天

错误不足总结

代码练习不多,但是不能放松,对于java的概述、switch语句、理论性知识要牢记熟练掌握不足
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: