JAVA入门基础(一)

一.JAVA是什么编译型语言还是解释型语言?

1.计算机如何识别java程序

翻译:将高级语言转换成计算机认识的二进制代码的过程

高级语言易于程序员编写代码,完成需求,但计算机并不认识高级语言,所以计算机需要进行将高级语言进行翻译:翻译有两种

第一种是编译 第二种是解释

目前大部分翻译的过程都需要一个中间过程:

源程序------------中间代码-------------目标代码

2.分类

编译是通过编译器将源程序一次性翻译(并进行对应格式的包装)成对应的目标代码.

编译是在运行整个代码前一次性完成的,编译成一个可执行文件,例如在java中就是.CLASS文件

编译型语言可移植性差,但效率高

解释是在运行时才会逐行执行.

解释型语言效率差.

很明显,这分别需要解释性和编译器

2.java的核心优势是什么,sun公司又是怎么实现这个优势的?

首先要清楚Java的语言类型,我们知道C,C++是编译型语言,并且编译C的过程比较繁琐,涉及到很多过程的转换,同时编译型语言与特定的系统有关,脱离环境可移植性较差.

而python是解释性语言.

JAVA即是编译型语言也是解释型语言

最初的翻译过程如下:

.JAVA---编译---.CLASS---解释---OS

java程序解释的环境是java特有的JVM(java virtual machine)

也就是说Java程序首先是通过编译后再通过JVM进行逐行解释,而后JVM和操作系统进行交互.

我们知道由于解释性语言是逐行操作的,效率较低,而编译型语言是一次完成,效率高,但可移植性差.

而sun公司通过开发了三种不同环境下的JVM(windows、linux、mac)

这样一来,极大的增强了java程序的可移植性,所以Java的核心技术点就是跨平台性.

在java刚出来的时候,很多人不看好,因为解释性语言的效率低下,但oracle和sun公司通过不断地优化,java在原有可移植性强的优势上,逐渐弥补了效率短板的不足

java有个''盗版'',是谁大家心里都清楚,但是Java已经占据大量市场了,某#已经吃不到那份红利了.


二.java的三大版本

1.面向个人计算机的JAVASE(JAVA STARD EDITION)

2.面向企业服务器版本的JAVAEE(JAVA ENTERPRISE EDITION)

3.面向消费性电子产品版本的JAVAME(JAVA MICRO EDITION)

三.java三大环境包

1.JVM.JRE.JDK

简单来说.

JDK是运行java程序的环境.

JRE是在JVM的基础上,添加了库函数等.

而JDK则是在JRE的基础上添加了编译器和调试器

三者为不同的人群服务.如果你只想运行Java程序,JRE足矣

而如果你要开发java程序则需要JDK.

四.学习语言核心技能.

认识bug----修改bug(底层程序员悲哀的早年(35)生活)

五.JAVA基本语法规范

1.java是大小写敏感的语言 例如 HELLO WORD 和 hello word是完全不同的(sql是大小写不敏感的)

2.java的类名规范:对于类说 java类的首字母应该大写,当由多个单词组成时,每个单词的首字母大写,其余字母小写

3.方法名规范:方法名应该以小写字母开头,当由多个单词组成时,除了第一个单词外,每个单词的首字母大写(好奇怪的规则)

4.源文件命名规范:源文件应该与类名名称相同,否则会编译出错

5.主程序入口:sout(bushi 滑稽)public static void main (String arg[]) 开始执行

6.标识符命名:A-Z,a-z,$,_开始,之后可以是A-Z,a-z,$,_,数字的组合

7.java修饰符:

访问控制修饰符:

修饰保护能力从小到大:public  protect default private

非访问控制修饰符:

final abstract static synchronized

8.java变量:局部变量 (类变量)静态变量 (成员变量)非静态变量

java中的变量基础是一部分需要梳理的

在java中我们会了解到很多不同类型的变量:局部变量、全部变量、类变量、静态变量、非静态变量、实例变量、成员变量

提到变量,我们都会想到一些特征:首先就是变量的作用域,其次是生命周期等等.

变量概念:

 局部变量和成员变量:

成员变量是指能够描述类的某一个属性,否则它就应该定义为局部变量.

例如写在成员方法内部的变量就是局部变量.

成员变量和局部变量的不同:

                                         成员变量                                             局部变量

1.作用范围不同    定义在类内 在整个类中都可以被调用        只定义在局部范围内 

2.伴随着随着对象的创建而存在、消失而结束存在于堆中   存在于栈中作用范围结束变量自动释放

3.成员变量有默认初始化值                                                      局部变量没有默认初始化值

这就意味着成员变量不需要人为初始化 而局部变量必须认为初始化,否则报错

class demo_test{
    String S;//成员变量
    public static void main(String[] args) {


        demo_test demo= new demo_test();//对象调用成员变量
        System.out.println(demo.S);
    }
    //null
}//可以看到 在java中 如果不对成员变量初始化 是不会报错的



class demo_test{

    public static void main(String[] args) {
        String S;//局部变量
        System.out.println(S);
    }//输出结果:java: 可能尚未初始化变量S
}//可以看到 在java中 如果不对局部变量初始化 是会报错的

//具体原因可能是因为局部变量所在栈内存不断被覆盖,不适合自动初始化,而成员变量在堆中开辟时就以默认初始化值存在

这里就涉及到了一个常考点:就近原则 通常与this.var和super 使用

事实上是java在找变量时,先在局部范围时找,如果没找到就会去成员变量中找

静态变量和非静态变量

事实上,非静态变量就是成员变量,成员变量又名实例变量(服了)

静态变量最明显的特征就是被 static关键字所修饰

例如 public static void main(),这里曾经有一道面试题,为什么非得用public static void修饰主函数

JVM调用是属于外部类调用,必须是PUBLIC类型

static保证了main不需要实例化对象再执行

void是空的返回值,如果改成其他,则会编译出错,因为返回的值必须被处理

如果一个变量要被定义为全局变量,则应该被定义为静态变量,即这个变量被类的所有对象共享,没有被静态修饰的变量,属于类的特殊描述

静态变量成员变量
生命周期不同:静态变量与类的生命周期共存亡成员变量随着类的创建而创建,类的消失而消失
调用对象不同:可以被类和对象调用只能被对象调用
别名不同:类变量实例变量 非静态变量
储存位置不同:方法区的静态区堆内存

静态变量也有初始化值

另一种说法:成员变量=实例变量+静态变量

有待考证

9.外部类与内部类

在java中规定,文件名必须与类名相同.

外部类是由于内部类存在的.外部类通过对象实例化调用内部类的方法和变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值