满满的干货=-=

(一)环境变量的作用: 每个人刚开始学习java的时候,肯定都是安装JDK,配置环境变量,怎么配置网上教程很多很多,但是为什么这么配置呢?

我配置的环境变量:

  • JAVA_HOME:C:\Program Files\Java\jdk1.8.0_172
  • Path:%JAVA_HOME%\bin
  • CLASSPATH:.(一个.)    

网上比较全面的环境变量:

  • (1)JAVA_HOME:C:\Java\jdk1.8.0_05(即JDK的安装路径)
  • (2)Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
  • (3)CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(注意前面的一个.)

为什么有的需要配而有的不需要呢?下面来说每一个环境变量的具体作用:  

  • JAVA_HOME:这个算是这三个里面最重要的了,如果你刚开始学肯定会怀疑为什么Path里面要引用JAVA_HOME,而不是直接写一个C:\Program Files\Java\jdk1.8.0_172\bin,如果你没有这么思考过,那你学习知识就有点。。。其实JAVA_HOME的 存在是有原因的,原因之一:作为JDK位置的引用命名,方便管理,Path中引用JAVA_HOME后,以后更换JDK只需要修改JAVA_HOME就完事了,原因之二:如果你继续往后学的话,使用eclipse你会发现eclipse自动找到了你的JDK,这就是 因为eclipse找到了你的JAVA_HOME,包括以后一些软件例如Tomcat,如果你没有JAVA_HOME,将无法启动。
  • Path:这个并不是java特有的,这是windows系统可执行文件的存放路劲,比如说你打开cmd,然后在C:\Users\DEVELOPER>目录下输入了一个qq.exe命令,系统首先在当前目录下搜索是否有qq.exe文件,如果没有就去Path下配置的所有路径当中寻找,还没有就报"不是内部或外部命令,也不是可运行的程序或批处理文件"。我配置这个%JAVA_HOME%\bin是为了找到java.exe、javac.exe等命令,网上教程的%JAVA_HOME%\jre\bin是为了找到java.exe、javaw.exe等,大家可以打开目录自己去看一下就知道都有什么命令了。而我们配置这些命令的搜索路径,目的只有一个那就是你写一个java文件要通过cmd(命令行界面)来编译和运行,先通过javac xxxxx.java生成class文件,再java xxxxx来执行。我相信当你用到eclipse之后就不会再这么折磨自己了。所有说当使用IDE开发后path下的配置的java环境变量就没有用了。
  • CLASSPATH:同上,也是在cmd(命令行界面)来编译和运行,先通过javac xxxxx.java生成class文件,再java xxxxx来执行。这个CLASSPATH就是class文件的存放路径,如果在编译的时候不知道class的生成路径,默认是在当前目录下生成,也就是和源代码java文件在一块,然后再执行java xxxxx命令开始执行class文件,看起来好像是没有问题,但是如果在class文件当中需要引用其他class文件(也就是导包,或者同一包下的其他类)运行就会失败,因为系统找不到需要的class文件,CLASSPATH的目的就是告诉系统去哪里找class文件,一个“.”代表当前目录下寻找,一般是自己写的多个类,编译后生成多个class文件。%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar是去JDK中寻找官方的类库(jar包就是class文件的集合),so,CLASSPATH没有用,因为我们是用IDE开发,IDE自己有自己管理class文件的方式,我们不需要关心它在哪存放,去哪寻找,我们只写代码,编译并运行就好啦。

综上所述。三个环境变量,只有JAVA_HOME是必须要配置的(例如:没有JAVA_HOME,Tomcat服务器是打不开的)。Path和CLASSPATH只是在命令行界面要用到的,使用IDE开发就没有作用了。

(二)修饰符总结

  我刚开始学习的时候,到修饰符这真的是一脸懵逼,就比如说我们平时常用的public、protected、default、private、static、final、abstract组合起来分别取修饰类、属性、方法,那么多情况简直让人头皮发麻。其实修饰符这里不用太去计较,在学习的过程中逐渐就会明白什么情况下用什么了。没必要很着急的去掌握每一种情况。

  (1)权限修饰符:修饰类、属性和方法,用于表示访问权限,权限从高到低位:public>protected>默认(就是没有写权限修饰符)>private

      •  private :私有权限,只能在当前类下访问,一般用来修饰属性,将属性封装起来不为他人道也。
      •  默认(default) :默认就是包访问权限,只能在同一包下进行访问,不同包下的子类也不能访问,注意区别protected,
      •  protected: 子类访问权限,同一包下和不同包的子类可以访问(比默认权限多了一个不同包下的子类)
      •  public :公共访问权限,即没有限制,公交车人人皆可上。

    对于权限修饰符来说,区别protected和default的方法是:protected总是保护自己的孩子嘛,当然是子访问权限啦,我们在开发阶段只需要掌握private和public就足够了,前者用来修饰属性,后者用来修饰构造器和方法。以此来实现属性不可见,仅向外提供操作的面向对象思想

  (2)状态修饰符-static:可以修饰成员变量和方法,表示成员变量或者方法是属于类的,被所有对象所共享,随着类的加载而加载(加载在方法区的静态区),意思是不需要对象即可调用,比如说Arrays类中的所有方法都是static的调用时直接通过类名.方法名调用

  (3)状态修饰符-final:可以修饰类,方法,变量。修饰类,类不能被继承。修饰方法,方法不能被重写。修饰变量变量是一个常量(不可更改,当变量是一个引用类型时,不可被更改的是地址值,而地址值对应的内容可以更改,似乎没有多大用处,所有一般用来修饰基本类型)。对于static和final总结一下,static的本意是静态,一般有俩种用途:其一是系统提供的工具类,这些类造对象是毫无意义的,static可以让他们直接通过类名调用方法,例如Arrays.toString(int[] a)。其二是我们自己写的类,这些类实例化的时候对象的某个属性或许某个方法全部都一样,static可以帮助我们只初始化一次,大大提高效率,说到这里已经很明显了,那么既然static是修饰对象所共有的一样的属性或者方法,那么他的值基本就固定了,我们便用final来声明这个属性或者方法不可更改,所以说有static的地方一般都有final(有的同学可能去看了Arrays的源码,发现所有方法都只有static修饰却没有final,同学们别忘了啊,final修饰方法是防止方法被重写,而Arrays类的构造器是private的,没有构造器就没有子类,没有子类哪来的方法重写),而有final却不一定有static,final修饰的是一个常量,而常量在使用前是必须赋值的(没有值叫什么常量啊)。下面是俩种初始化方法:

public class FinalDemo {

    private final int a;

    public FinalDemo(int a) {
this.a = a;
} }
public class FinalDemo {

    private final int a = 2;

}

final最常见的用途是,在局部内部类引用局部变量时扩大局部变量的生命周期,所谓的扩大生命周期就是,将一个虚拟机栈(局部变量)的数据移动到方法区(常量)中(详情在下图),以防止局部变量过短的生命周期走到头而局部内部类还在使用该变量

  (4)抽象修饰符-abstract:可以修饰类和方法,修饰类,类是抽象类,修饰方法,方法是抽象方法(没有方法体的方法)需要子类或者实现类重写此方法,注意,有抽象方法的类一定是抽象类,也必须是抽象类,抽象类中不一定有抽象方法(那么没有抽象方法的抽象类有什么作用呢?抽象类是不能实例化的,即禁止他创对象),接口中方法修饰符都是public abstract(无论你写或是不写,默认都是这俩个)

总结一下:禁止类创建对象的俩种方式

  • 构造器私有:该类不能创建对象,同是也不能被其他类继承,一般用作工具类。
  • 将类抽象化:该类不能创建对象,强迫其他类来继承他,重写某些方法。

            

java基础知识总结(一)的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  3. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  10. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. DragControl

    原文:DragControl 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Vblegend_2013/article/details/837911 ...

  2. vs2008 命令窗口 命令窗口 和 反汇编窗口的使用

    visual studio 的功能相当强大,用了一年多,也只是了解了皮毛.今天学习了一下VS2008 的 即时窗口 命令窗口 和 反汇编窗口的使用.之所以会想到要使用即时窗口是因为最近开发遇到了一个问 ...

  3. 细数 Windows Phone 灭亡的七宗罪(过程很详细,评论很精彩,但主要还是因为太慢了,生态跟不上,太贪了,厂商不愿意推广)

    曾梦想仗剑走天涯,看一看世界的繁华 年少的心有些轻狂,如今你四海为家 曾让你心疼的姑娘,如今已悄然无踪影 犹记得上大学攒钱买了第一台智能手机Lumia 520时,下载的第一首歌曲<曾经的你> ...

  4. ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Windows 环境配置 ASP.NET Core ...

  5. Kubernetes使用集群联邦实现多集群管理

    Kubernetes在1.3版本之后,增加了“集群联邦”Federation的功能.这个功能使企业能够快速有效的.低成本的跨区跨域.甚至在不同的云平台上运行集群.这个功能可以按照地理位置创建一个复制机 ...

  6. 自定义函数Function

    定义 对于SQL Server来讲,我们声明一个变量的方式是用@变量名,而且相对于编程来讲,SQL Server声明的方式跟我们开了个玩笑,是先变量后面才是类型.对于需要传参跟不需要传参的方式,其实跟 ...

  7. Prism框架在项目中使用

    本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM ...

  8. 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机

    原文:用MVVM模式开发中遇到的零散问题总结(5)--将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打 ...

  9. datacontract helper

    public static class DataContractHelper { public static void ToDCFile<T>(this T obj, string pat ...

  10. vagrant up 无法加载映像目录

    错误代码显示: ==> default: Attempting graceful shutdown of VM... ==> default: Clearing any previousl ...