Java教程---(一)

Java 是由Sun Microsystems 公司于1995年5月推出的高级程序设计语言。

Java 可运行于多个平台,如Windows,Mac OS及其他多种UNIX版本的系统。

移动操作系统 Android 大部分的代码采用 Java 编程语言编程。

我的第一个JAVA程序

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

 首先我们要知道java的原理以及最最最最基础的知识,为了自己更好的理解和学习,也为了和别人探讨的时候,也知道人家在说什么,尤其是在面试的时候,你觉得呢?

好了,接下来的日子里,我会不定期的进行更新java 的基础知识,希望我们一起学习,一起成长,喜欢是一切事物的成功的开始,要么你目标明确, 为了钱, 要么为了你的梦想,你的爱。

好啦,我们要开始学习了哦,首先,我们要知道的知识如下:

1、阐述什么是JVM、JRE和JDK,以及他们的区别

JDK:(Java Development Kit )Java开发工具包,Java开发必备

JRE:(Java Runtime Environment)Java运行环境,运行java程序必备

 JVM:(Java Virtual Machine)  Java虚拟机

JDK包含JRE,JRE包含JVM

2、Java 标识符命名规则

使用英文字母、数字、_  、$、但是不能以数字开头,不能使用Java关键字和保留字

在Java中大小写敏感,多个英文单词组成的时候第二个单词开始的单词首字母要大写,其他单词的首字母也要大写,

变量和方法的首字母要小写

3、java基本数据类型并写出在内存中占用空间大小

整数类型:byte  1个字节,8位二进制位

                short 2个字节,16位二进制位

                int  4个字节,32位二进制位

                long 8个字节,64位二进制位

浮点类型:double 8个字节,64位二进制位

                float  4个字节,32位二进制位    

字符类型:char 2个字节,16为二进制位

布尔类型:Boolean  1个字节,8位二进制位

基本数据类型转换

原始数据烈性,简单类型,基本类型都是一个含义;分为定点类型和浮点类型

(基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数)

符合类型,扩展类型,复杂类型,引用类型都是一个含义;

(引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。)

浮点类型,实数,实型都是一个含义

逻辑性,布尔型都是一个含义

(定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把他们称为整数;常量:就是直接的值;变量:防止常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的;)
八种基本数据类型除了布尔型之外剩下的7种类型之间都可以进行相互转化

小容量向大容量转换,称为自动类型转换,不同类型的大小排序如下:
byte < short (char) < int < long < float < double

注:任何浮点类型不管占用多少字节,都比整数类型的容量大
char和short可以表示的种类数量相同,但是char可以取到更大的正整数(因为short为整型,正负值的个数相同,但是char为字符型,只有正值,所以char可以表示更多的正值)

大容量转换成小容量,要进行 【强制类型转换】 ,要加强制类型转换符,程序才能编译通过,但是在运行阶段可能导致精度损失,所以应该谨慎使用强制类型转换功能。

当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char

byte,short,char混合运算的时候,先转换成int类型,再进行运算

多种数据类型混合运算的时候,先转成容量最大的那种类型,再进行运算


 4、引用数据类型:类,接口,数组

5、Java数据类型在内存中的存储

        1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的, 数据本身的值,就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

        2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存站上,而对象本身额的值存储在内存堆上的;

6、Java语言的三种技术架构

        J2EE:企业版

                是为开发企业环境下的应用程序提供的一套解决方案。

                该技术体系中包含的技术如Servlet、Jsp等,主要针对于Web应用程序开发。

        J2SE:标准版

                是位开发普通桌面和商务应用程序提供的解决方案。

                该技术 体系是其他两者的基础,可以完成一些桌面应用程序的开发。

                比如 Java版的扫雷

        J2ME:小型版

                是位开发电子消费产品和嵌入式设备提供的解决方案。

                该技术体系主要应用与小型电子消费类产品,如手机中的应用程序等。

  7、Java内存划分的5个部分:

        1)栈 stack   :储存局部变量

                存放的都是方法重的局部变量,方法的运行一定要在栈当中,

                局部变量:方法中的参数,或者方法{}内部的变量(方法定义中的,或者方法声明中的)

                作用域:一旦超出作用域,立刻从栈内存当中小时

  •         特点:栈内存的数据用完就释放。

        2)堆 heap:储存new出来的东西

                堆内存里面的东西都有一个地址值,16进制

                对内存里面的数据,都是默认值,规则:如果是整数,默认位0;浮点数默认0.0,字符\u0000,布尔false  ,引用类型默认null。

                特点:堆内存使用完就变成垃圾,但是并没有立即回收,会有垃圾回收器空闲的时候回收。

         3)方法区method area :存储.class相关的信息,包含方法的信息(一个对象运行的过程)

                a)程序从main方法中进入,运行到phone p时,在栈中开辟了一个空间,

                b)new phone()时,在堆中开了一个内存空间,此时会有一个内存值位0x0001;此时,会找到对应的phone的class文件,发现有三个变量和三个方法,于是将三个成员变量放在了堆中,但是此时的值为默认值,注意,再放方法去里也有一个地址值,假设为0x001,可以认为在堆中也有一个位置,在堆中的位置,可以找到方法区中相对应的方法;

                c)继续运行,p.brand = "三星";将三星赋值给 p.brand,通过栈中的 p 找到了堆中的 brand,此时的 null 值变为“三星”。剩下的类似;

                d)当运行到 p.call("乔布斯") 时,通过栈中的 p 找到堆中存在的方法区的内存地址,从而指引到方法区中的 Phone.class 中的方法。从而将 call 方法加载到栈内存中,注意:当执行完毕后,call 方法就从栈内存中消失!剩余的如上。

                e)最后,main 方法消失!

        4)本地方法栈 native method stack:与操作系统相关

        5)寄存器 pc register:与CPU相关

8、Java基本类型取值范围计算    

从计算机组成原理的角度可以解释:

byte在计算机中是占8个字节的, 而且byte 是有符号整形,用二进制表示时候最高位为符号位 0代表正数 1代表负数。

最大值:127      即2的7次方减去1;最小值: 即2的7次前面加个负符号:-128 。(包含开始,不包含结尾);

正数在计算机中是以原码形式存在的;

负数在计算机中是以其补码形式存在的,就是负数的绝对值的原码转为二进制再按位取反后加1。

下边这个10和-10为例来介绍的 :10原码:0000 1010   它在计算机中的存储就是 0000 1010,-10 按照前面说的算除其绝对值为10,转为二进制 0000 1010 按位取反 1111 0101 再加1后:1111 0110,此为-10补码 ,好的,计算机中的1111 0110就是代表-10了。

 我们来看 -128  绝对值128的二进制表示:1000 0000 按位取反 0111 1111 加1后:1000 0000,也就是说 -128在计算机中的表示就是 1000 0000 了, 再来看一下-129 在计算机中的表示,绝对值129的范围已经超出了了byte的位数。所以要注意这类问题;

byte(字节类型) 一个byte 8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)默认是0
short(短整型) 一个short 16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)默认是0
int(整型)        一个int 32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)默认是0
long(长整型)   一个long 64位,取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)默认是0L或0l推荐用大写;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值