您的位置:首页 > 编程语言 > Java开发

【Java】Java学习进度_W1

2015-03-30 21:56 134 查看
学习Java可以说是一直以来的想法,但是却一直都没有用心、踏实去实践。自己也希望能够先知先觉,可是经历过找工作后才发现原来自己竟是小白,这对于一个本科学习理科、研究生学习工科且就业方向偏计算机的学生,这委实是一件不光彩的事情;因此,在工作已经落定之后,论文大体完工之前,坚定了要学习Java的想法,这一次要玩真的了。不知不觉间,四年的本科、三年的研究生马上就结束了,现在才去接受自己是一个后知后觉的人,算不算已经晚了?这让我想到了《士兵突击》中的一个片段:高城由钢七连连长调任副营长时,当时的王团长,这样和高城说,三年的军校,一年的排长,三年的连长,我希望你不要辜负这七年。刚好,我也七年,后知后觉的七年。

真正让我萌生学习Java的想法,是因为我自己一直想学习做一款APP,可Android是基于Java的,因此转到了这。也看过很多大牛们分享的学习Android和Java的历程,可是终归光看是不能成就任何事情的。就拿一个简单的代码,你不写,不调试,光认为,是不会有进步的。

不多说了,开始我这一周,应该是3天的学习总结吧。因为之前有过C/C++的基础,而且是跟着视频学习的,因此很多知识都不会列在下面,仅仅是对我的知识盲点的一个补充或者叫做扩展吧;当然,C++也还没有掌握很好。

第一周的时间主要学习了Java的运行环境,以及一些简单的语法。

1. Java概述与环境搭建

Java是SUN(Standford University Network,斯坦福大学网络公司)推出的一门语言,之前看到都会说,Java是一家太阳公司的语言,原来SUN是三个单词的缩写。Java语言具有跨平台性,指的是用Java编写的程序能够在不同的平台运行,原理在于,只要在运行Java编写的程序的电脑上配置Java虚拟机JVM(JavaVirtualMachine)就可以,JVM负责运行程序。JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种
.class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

知道了Java的跨平台性之后,接下来就是搭建环境了。首先,还需要了解两个概念,什么是JDK,什么是JRE。

JRE,是JavaRuntime
Environment的简称,Java运行环境,从这个名字就可以看出,运行Java时需要配置这个JRE,包括Java虚拟机和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK,是Java
Development Kit的简称,Java开发工具包,从名字也可以看出这是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE,因此从集合上来说,JDK>>JRE>>JVM,如下图所示:



因此,目的是开发,所以要下载JDK,可以从两个地址入口:

www.oracle.com 或者 java.sun.com。进来之后,如下图所示:



又涉及到到底是下载JavaSE还是JavaEE呢?还是参考下表吧。



就下载JavaSE的版本。然后安装,建议不要安装在有中文字符或者特殊符号的路径中,一般都会把软件安装在D:\Program Files,因此在安装JavaSE时,重新创建一个文件夹F:\Java。在安装快结束时,会提示安装JRE,这个时候可以选择不安装。至此,软件安装已结束。接下来需要配置环境变量。

这就需要熟悉一下常用的dos命令。

dir:列出当前目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:进入指定目录
cd..:退回到上一级目录
cd/:退回到根目录
del:删除文件
exit:退出dos命令行
cls:清屏

在dos命令下输入javac,会出现错误提示:



这是因为,javac是安装在F盘下的,而当前操作路径是C盘,因此如果将目录换成javac的安装路径下,就不会出现上面的错误提示。

javac在JDK安装路径\bin目录下,这样每次执行javac的时候,都需要进入到该路径下,很麻烦;因此考虑将Java工具所在路径定义到环境变量中。设置过程如下:

右击“计算机”→属性,找到高级系统设置,然后选择环境变量,在系统变量中选择Path,双击其内容出现如下图4所示,将安装的JDK下的bin路径拷贝到Path中,我安装的路径是在F:\Java\jdk1.7.0_01\bin,注意在粘贴玩这个路径后需要加上分号;。最后确定即可。



这样,即使在dos下当前操作目录不是javac的路径也可以执行javac了。如下图所示:



至此,搭建环境就结束了。

2. Java开发体验

接下来就可以写Java代码了。

2.1 步骤一:编写

class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

这是编写的一段代码,其中,类名最好要和源文件名一致。

2.2 步骤二:编译

在dos命令中,进入到源文件所在的目录,在这里用到的目录是F:\Java\java_code\Day01,使用javac Hello.java,进行编译。如果编译成功,目录下会出现一个和类名一致的字节码文件,Hello.class。



如果可能出现错误的话,可能是文件路径不对,可能是文件名不对,可能是代码内容有误。



2.3 步骤三:

编译通过之后,就可以运行了。

dos下输入java Hello,就可以了。

至此,体验结束。

3. 细节与规范

3.1 名称规范,严格区分大小写

包名:多单词组成时所有字母都小写,xxxyyyzzz;
类名接口名:多单词组成时,所有单词的首字母大写,XxxYyyZzz;
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,xxxYyyZzz;
常量名:所有字母都大写,多单词时每个单词用下划线连接,XXX_YYY_ZZZ。

3.2 注释

单行注释//
多行注释/*注释内容*/,其中不能嵌套

3.3 代码规范

如下所示:

/*
需求:。。。。。。
思路:。。。。。。
步骤:。。。。。。
*/
class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } }


在编译含有中文注释的代码时,可能会出现如下图所示的问题。



这是因为:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac-encoding
gbk XX.java,当然就会出现不兼容的情况。

可以通过以下代码查看计算机默认的编码方式:

/*
需求:测试系统默认的编码方式
思路:调用系统函数打印编码方式
步骤:System.getProperties().list(System.out);
*/
class Test
{
public static void main(String[] args)
{
System.getProperties().list(System.out);
}
}

通过编译运行上面代码可以看到系统默认的编码方式:



可以通过以下三种方式进行修改:

①记事本:

在记事本中另存为,编码方式选为ANSI;



②Notepad:

格式,选择编码方式为ANSI。



③编译时,javac–encoding utf-8 类名.java。只是从网上搜索到了这种方法,我自己做的时候,没有实现。

可以参考:

字符编码的奥秘utf-8,Unicode

UNICODE,GBK,UTF-8区别

Ansi,UTF8,UNICODE,ASCII编码的区别

4. 语法规则

4.1 数据类型

‘a’是字符,”a”是字符串类型;
八进制用0_,十六进制用0x_;
负数的二进制表示:-6 = 6的二进制取反+1;
字符‘1’的数值为49;
1 % -5= 1,-1 % 5= -1,即符号和前面数据一致;
字符串数据和任何数据使用+都是相连接,最终为字符串;

对于上面最后一条,当想要执行System.out.println("5+5="+5+5);时,会出错,应该为System.out.println("5+5="+(5+5));

4.2 运算符

4.2.1 赋值运算符

对于赋值运算符说一点,当要执行下列程序段时,执行s=s+4时,编译出错,执行s+=4时能正常编译运行。这是因为,前者执行两次运算,后者一次运算(自动转换)。

short s = 5;
//s = s + 4;
s += 4;
System.out.println(s);




4.2.2 逻辑运算符



需要注意的一点是



4.2.3 位运算



<<:乘以2的位数次幂,最高位补什么,由原有数据的最高值而定,如果是0就补0;
>>:除以2的位数次幂;
>>>:无论最高位是什么,右移后,补0;
6 10&310 = 01102 & 00112 = 00102 = 210;
一个数异或同一个数两次,结果还是那个数,即a^b^b=a;

两个小例子:

①最有效率的方式算出2乘以8。答案:2<<3.

②对两个整数变量的值进行互换。有以下三种方式。

方案一:

int a = 2;
int b = 4;
int temp;
temp = a;
a = b;
b = temp;

方案二:

int a = 2;
int b = 4;
a = a + b;
b = a - b;
a = a - b;

方案三:

int a = 2;
int b = 4;
a = a^b;
b = a^b;
a = a^b;

上面三种方案中,在开发中用方案一,方案二对于如果a或者b有一个较大的数时就会超出int的范围。

4.2.4 三元运算符

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

终极大例子:将十进制60转换为十六进制

代码如下:

/*
需求:将十进制整数转换为十六进制
思路:
步骤:
*/
class De20x
{
public static void main(String[] args)
{
int in = 60;
System.out.println(in);
//获取60的首低4位,通过&15
int n1 = in & 15;
//要获取下组4位,将60右移4位,这里注意要用>>>而不是>>
int n2 = (in>>>4) & 15;
//要先打印输出靠前的数值
if(n2>9)
{
//如果n2>9,则应该用字母表示
System.out.print((char)(n2 - 10 + 'A'));
}
else
{
System.out.print(n2);
}
if(n1>9)
{
System.out.println((char)(n1 - 10 + 'A'));
}
else
{
System.out.println(n1);
}
}
}

5. 程序流程控制

5.1 判断结构

5.2 选择结构

Switch语句:

格式:

switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default:
执行语句;
break;
}

注意:

①Switch语句选择的类型只有四种:byte, short,int, char;

②Case之间与default没有顺序,先执行第一个case,没有匹配的case再执行default;

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

④如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,知道遇到break或者switch结尾结束。

5.2 循环结构

最简单的无线循环格式:while(true),for(;;)。

5.3 其他流程控制结构

Break(跳出),continue(继续)

Break:应用范围:选择结构和循环结构。

Continue:应用循环结构。

注意:continue语句是结束本次循环继续下次循环。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: