Java基础语法和基本数据类型

Java基础语法

一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。

  • 对象:对象是类的一个实例,有状态(属性)和行为(方法)。
  • :类是一个模板,他描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

 

基本语法

编写Java程序时,应注意以下几点:

  • 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello和hello是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。例如MyFirstJavaClass
  • 方法名所有的方法都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词名大写。例如deleteMyWord
  • 源文件名:源文件名必须和类名相同。
  • 主方法入口:所有的Java程序由public static void main(String []args)方法开始执行。

 

Java标识符

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary

 

Java修饰符

和其他语言一样,Java可以用修饰符来修饰类中的方法(行为)和属性(状态)。主要有两类修饰符:

  • 访问控制修饰符:default,public,protected,private
  • 非访问控制修饰符:final,abstract,static,synchronized

在后面的章节中我们会深入讨论Java修饰符。


Java变量

Java中主要有如下几种类型的变量:

  • 局部变量
  • 类变量(静态变量static)
  • 成员变量(非静态变量)

 

Java数组

数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。


Java枚举

Java5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。

实例

 1 class FreshJuice{
 2 enum FreshJuiceSize{small,medium,large};
 3 FreshJuiceSize size;
 4 }
 5 
 6 public class FreshJuiceTest{
 7 public static void main(String []args){
 8 FreshJuice juice=new FreshJuice();
 9 juice.size=FreshJuice.FreshiJuiceSize.medium;
10 }
11 }
View Code

注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。


 

Java关键字


 

Java注释

类似于C/C++、Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。


 

继承

在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。

利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。


 

接口

在Java中,接口可以理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。

接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类(子类subclass)。


 

Java源程序与编译型运行区别


 

Java基本数据类型

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。

Java的两大数据类型:

  • 内置数据类型
  • 引用数据类型

 

内置数据类型

Java语言提供了八种基本类型。六种数字类型(4个整数型,2个浮点型),一种字符类型,还有一种布尔型。

实例

 1 public class PrimitiveTypeTest {  
 2     public static void main(String[] args) {  
 3         // byte  
 4         System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
 5         System.out.println("包装类:java.lang.Byte");  
 6         System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
 7         System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
 8         System.out.println();  
 9   
10         // short  
11         System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
12         System.out.println("包装类:java.lang.Short");  
13         System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
14         System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
15         System.out.println();  
16   
17         // int  
18         System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
19         System.out.println("包装类:java.lang.Integer");  
20         System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
21         System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
22         System.out.println();  
23   
24         // long  
25         System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
26         System.out.println("包装类:java.lang.Long");  
27         System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
28         System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
29         System.out.println();  
30   
31         // float  
32         System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
33         System.out.println("包装类:java.lang.Float");  
34         System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
35         System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
36         System.out.println();  
37   
38         // double  
39         System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
40         System.out.println("包装类:java.lang.Double");  
41         System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
42         System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
43         System.out.println();  
44   
45         // char  
46         System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
47         System.out.println("包装类:java.lang.Character");  
48         // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
49         System.out.println("最小值:Character.MIN_VALUE="  
50                 + (int) Character.MIN_VALUE);  
51         // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
52         System.out.println("最大值:Character.MAX_VALUE="  
53                 + (int) Character.MAX_VALUE);  
54     }  
55 }  
View Code

编译以上代码输出结果如下所示:

Float和Double的最小值和最大值都是以科学计数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14*103,3.14E-3就是3.14*10-3

实际上,Java中还存在另外一种基本类型void,它也有对应的包装类java.lang.void,不过我们无法直接对它们进行操作。

类型默认值


引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Puppy等。变量一旦被声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
  • 例子:Site site=new Site("Runoob")。

 

Java常量

常量在程序运行时是不能被修改的。

在Java中使用final关键字来修饰常量,声明方式和变量类似:

 final double PI =3.1415927; 

 

虽然常量名也可以用小写,但是为了便于识别,通常使用大写字母表示常量。

字面量可以赋给任何内置类型的变量。例如:

 byte a=68; char a='A'; 

byte、short、int、long都可以用十进制、十六进制以及八进制表示。

前缀0表示八进制;

前缀0x表示十六进制。

 1 int decimal=100; 2 int octal=0144; 3 int hexa=0x64; 

字符串常量和字符常量都可以包含任何Unicode字符。例如:

 1 char a='\u0001'; 2 String a="\u0001"; 

 

Java语言支持一些特殊的转义字符序列。


 

类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换从低级到高级:

数据类型转换必须满足如下规则:

  • 1.不能对boolean类型进行类型转换。
  • 2.不能把对象类型转换成不相关类的对象。
  • 3.在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 4.转换过程中可能导致溢出或者损失精度,例如:
int i=128;
byte b=(byte)i;

因为byte类型是8位,(-128——+127),所以当int强制转换为byte类型时,值128就会导致溢出。

  • 5.浮点数到整数的转换是通过舍弃小数得到的,而不是四舍五入,例如:

 (int)23.7==23; (int)-45.89f==-45 

自动类型转换

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如:short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

 1 public class ZiDongLeiZhuan{
 2 public static void main(String[] args){
 3 char c1='a';
 4 int i1=c1;
 5 System.out.println("char自动类型转换为int后的值为“+i1);
 6 char c2='A';
 7 int i2=c2+1;
 8 System.out.println("char类型和int计算后大的值等于”+i2);
 9 }
10 }

强制类型转换

  1. 条件是转换的数据类型必须是兼容的。
  2. 格式:(type)value  type是要强制类型转换后大的数据类型 
1 public class QiangZhiZhuanHuan{
2 public static void main(String[] args){
3 int i1=123;
4 byte b=(byte)i1;
5 System.out.print("int强制类型转换为byte型后的值等于"+b);
6 }
7 }

 

隐含强制类型转换

  1. 整数的默认类型是int。
  2. 浮点型不存在这种情况,因为在定义float类型时必须在数字后面跟上F/f。

 

posted @ 2020-01-27 21:53  yl新蜜蜂  阅读(446)  评论(0编辑  收藏  举报