从小白慢慢往上爬的历程---初识Java

        HelloJava,在敲出漂亮的java代码前,要先了解一下java的一些基本概念以及规范,摸清楚她的脾气才能将来更好的驾驭她

        需要掌握Java的那些概念呢?这里就列举几个基础的吧,比如类、对象、方法、变量、接口、数据类型、标识符

        先说类,类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起,类就像数学上我们学过的集合。在Java中我们所有的语句都要写在一个类中的,其基本结构为 class+类名+{} 。类中的元素就是对象,类和对象的关系就是类是对象的一个抽象集合,他不占用内存,而对象是类的实例,是要具体开辟出一块空间内存给他的。虽说类像集合但我们在写类的时候并不是把他包含的对象都写进去,而是在那对大括号中写上他所包含对象的共有属性和方法。类的属性是什么呢?我的理解就是指类的成员变量(成员变量和局部变量的区别就是写在方法体中的就是局部变量,写在类中但不在方法体中就是成员变量),所有变量的结构是数据类型+变量名=初始化的值 或者数据类型+变量名;;方法就是用来处理数据的,其基本结构为 方法类型(是否返回值,返回就写具体的返回数据类型,不返回就写void)+方法名+(传入参数的数据类型+传入参数名)+{}  其中参数可以没有(关于抽象方法的格式后边再写)。

       那么接口是什么呢?Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

       接口的定义格式:

[public] interface 接口名称 [extends父接口名列表]
{
//静态常量
[public] [static] [final] 数据类型变量名=常量值;
//抽象方法
[public] [abstract] [native] 返回值类型方法名(参数列表);
}
实现接口格式:
[修饰符] class 类名[extends 父类名] [implements 接口A,接口B,···]
{
类成员变量和成员方法;
为接口A中的所有方法编写方法体,实现接口A;
为接口B中的所有方法编写方法体,实现接口B;
}
没错这一段是我百度百科的,具体例子百科写的很详细,之后的帖子也会再记录一些我对接口的理解。这里有一点需要小白们知道,要学会百度,百度可以Google到很很多有用的知识,但是不要百度具体的业务要求的源代码,而是多百度一些数据结构和算法静下心来学,学习这东西急功近利来不得。
 前边多次提到数据类型,那么数据类型是什么呢?顾名思义,数据类型就是数据的类型(这里百度一下还有更详细的解释,鉴于作者是个懒货就不贴出来了),数据类型可以分为基本数据类型和引用数据类型(类、接口、数组)。基本数据类型一共有4类8种,是所有Java程序猿必须掌握的,分别为 整数类 byte型,占用1个字节(8位二进制数)取值范围是-2^7~2^7-1,short型,占用2个字节(16位二进制数)取值范围是-2^15~2^15-1int型,占用4个字节(32位二进制数)取值范围是-2^31~2^31-1long型,占用8个字节(64位二进制数)取值范围是-2^63~2^63-1,这里要注意,long型的变量在赋值时要在数值前或后方标注l或L,不标注默认为int型;浮点数类float型,占用4个字节(32位二进制数)取值范围是-3.403E38~3.403E38-1,float型的变量在赋值时要在数值前或后方标注f或F,不标注默认为double型,double型,占用8个字节(64位二进制数)取值范围是-1.798E308~1.798E308-1字符类char型,占用2个字节(16位二进制数);布尔类boolean型,占用1个字节(8位二进制数),只有true和false两个值。再就是讲一个很常用的数据类型String型,string型并不是基本数据类型但是很常用,是用来接收字符串的,同是接收字符或字符串的,char型只能赋值一个字母、数字或者一个汉字,用 ' ' 括起来如char number = '1';,string型可以随意赋值单词、句子,用" "括起来如String name =" number=1 "; 。数据类型之间是可以互相转换的,默认遵循从小到大的规则,byte,short,char →int→ long → float→double,byte,short,char之间不相互转换,直接转成int类型参与运算;强制转换可以从大到小,格式为 目标数据类型 变量名 = (目标数据类型) (被转换的数据);但是可能会损失精度,如果你的原始数据比强转后类型的范围要大则会溢出数据,举个例子:byte b = (byte)130; ,这里的130默认为int型,强转为byte型,我们知道,130转化为二进制为10000010,其补码为10000010,默认为int型数据是有32位的,其存储在计算机中是00000000 00000000 00000000 10000010(计算机中数据均以补码存储,第一位为符号位,0表整数1表负数),然而强转为byte型时会只取最后一个字节(即8位),就是10000010,此时其原码为11111110,最高位是符号位,转化成十进制就是-(64+32+16+8+4+2)=-126,这与我们想要的130显然是不同的这就是数据在强转的时候发生了溢出。

        最后说说标识符,标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的,就是他们的名字关键字,关键字就是被Java语言事先定义的,赋予了特别意义的标识符,比如表示基本数据类型的int、double,表示类的class,表明类或者成员方法有抽象属性的abstract,判断用的分支语句if、else,重复执行用的循环语句do、while、for......

       我们在编写Java文件时需要自己定义类,定义方法,定义变量,给他们起名字就得遵循一些规范。首先所有的起名都要遵循见名知意,比如将书籍定义成book就比定义成b1、b这种要规范很多,至少过一个星期你还能看懂自己的代码(再就是一定要写注释,注释的写法在上一篇《邂逅Java》的代码展示中有),然后需要注意不能使用关键字和保留关键字(main,goto),最后(其实就是个文件夹啦)的名字全部小写字母,比如单级包helloworld,bookmanage,多级包com.bookmanage.view (这个的效果就是最后产生一个com文件夹里面有bookmanage文件夹,里面有view文件夹,而且看包名大概也能猜出这个包里面放的是图书管理的界面文件);类和接口的名字如果是一个单词的就首字母大写,多个单词的就每个单词首字母大写,比如Student,HelloWorld,TextDomo;方法和变量的名字如果是一个单词的就首字母小写,多个单词的就从第二个单词开始首字母大写,比如name,studentName,getStudentName();常量(跟变量区别开就是其值定以后不会跟着程序的执行变化的量,格式是 final+数据类型+变量名称=初始赋值;,比如 final double PI = 3.14;)的名字如果是一个单词就大写字母,多个单词全大写字母并用_隔开,比如PI,MAX_COUNT,MAIN_COUNT。

       这里贴出几个我在学习这一部分时感觉挺好玩的几个题:

        1.Q: char a='0'; 

                //这是个数字0不是个字母o   

                System.out.println('0');

                System.out.println('0' + 0);

                输出分别是什么?

        2.Q: 下面的程序有问题吗,如果有,在哪里呢?
                byte b1 = 1;

                byte b2 = 2;

                byte b3 = b1 + b2;    

                byte b4 = 1 + 2;

        3.Q: System.out.println(1+2.0);

                System.out.println("hah"+'a'+1);

                System.out.println('a'+1+"hah");

                System.out.println("1+1="+1+1);

                System.out.println(1+1+"=1+1");

                输出分别是什么?

        4.Q: 既然long型数据存储空间为8位而float型只有4位为何默认数据类型转换的顺序是long → float呢?

           A: 因为long型与float型的存储结构不同,并且float表示的数据范围要比long型大很多

你可能感兴趣的:(我的成长历程(理性类))