【Java】Java学习进度_W1

来源:互联网 发布:消费金融 知乎 编辑:程序博客网 时间:2024/06/01 16:52

学习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,是JavaRuntimeEnvironment的简称,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位,通过&15int 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语句是结束本次循环继续下次循环。


0 0