【Java要点】1.基础规则与基本语法

以前学习java时总结了一些笔记,接下来的一段时间里我会对这些笔记进行整理,并结合一些新的资源加以优化。一些非常简单但是比较重要的知识点仍加以保留,而与C、C++等语言完全相同的基本特性则部分省去,算是为新人们提供一些指引吧。废话不多说,Go!

一、Java代码的常见命名规则

1.1:包 package
    * 最好是域名倒过来,要求所有的字母小写,比如 com.baidu.mypackage 
1.2:类class或者接口interface
    * 如果是一个单词首字母大写,比如 Tool
    * 如果是多个单词每个单词首字母大写(驼峰标识), 比如 MyTool 
1.3:方法或者变量
    * 如果是一个单词全部小写,比如 reverse()
    * 如果是多个单词,从第二个单词首字母大写,比如 reverseString()
1.4:常量
    * 如果是一个单词,所有字母大写,比如PI
    * 如果是多个单词,所有的单词大写,用下划线区分每个单词,比如 DAYS_OF_YEAR


二、 数据类型

2.1 Java的数据类型主要分为两种,①基本数据类型②引用数据类型

*基本数据类型在被创建时,在上给其划分一块内存,将数值直接存储在栈上。

int a = 10;
a = 34;
double b = 10.1;

*引用数据类型在被创建时,首先要在栈上给其引用分配一块内存,而该对象的所有信息都存储在堆上,栈上面的引用存储着对象的地址,从而指向堆中的对象。这里的引用非常类似于C++中的指针。

Student s1 = new Student("Trump",23);
s1 = new Student("Mr Chairman",24);

2.2 基本数据类型的分类

主要包含四大类8种

* 整数型
        * byte 占一个字节  -128到127
        * short 占两个字  -2^15~2^15-1
        * int 占四个字节 -2^31~2^31-1
        * long 占八个字节 -2^63~2^63-1
* 浮点型
        * float 占四个字节 -3.403E38~3.403E38  单精度
        * double 占八个字节-1.798E308~1.798E308 双精度
* 字符型
        * char 占两个字节 0~65535
* 布尔型
        * boolean 需要指出的是,java中boolean类型没有明确指定其大小      

2.3 数据类型的转换

数据类型的转换包括两种,①隐式转换②强制转换。

*隐式转换下,取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算。

举个例子:

int a = 13;
byte b = 56;
a = a + b;//这里b会被提升为int型,再同a相加

注意,进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的:byte,short,char → int → long → float → double

*强制转换,与C语言中的类型转换方法类似。


三、 运算符

1.逻辑运算符的辨别

    * 与 &,&&:&&具有短路效果,左边为false,则右边不再执行。&则都会执行。
    * 或 |,||:||具有短路效果,左边为true,则右边不再执行。|则都会执行。

    * 异或 ^

    * 非 !

2. 位异或运算符的特点

    * 位异或运算符^有一个重要特点,一个数据对另一个数据位异或两次,该数本身不变。那么问题来了:“请自己实现两个整数变量的交换”,方法如下:

/*要求:交换a和b*/
int a = 56;
int b = 12;

/*方法1*/
int tmp = a;
a = b;
b = tmp;

/*方法2*/
a = a + b;
b = a - b;
a = a - b;

/*方法3*/
a = a ^ b;
b = a ^ b;
a = a ^ b;

四、基本语句

4.1 实现键盘录入

import java.util.Scanner;

public class HelloWorld{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();//获取整数
        String str = sc.nextLine();//获取字符串
    }
}

4.2 if,for,while,do...while语句

*与C相同。

4.3 switch语句

*与C非常类似:

switch(表达式) {
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
        …
    default:    
        语句体n+1;
        break;
}

*需要特别注意的是,作为表达式,基本数据类型可以接收byte,short,char,int等整形(不可浮点型);引用数据类型可以接收枚举enum(自JDK1.5)以及String(自JDK1.7)。


五、方法(method)

5.1 与C++中的函数类似,但是有几点不同:

    *①java的方法名前面除了返回值类型以外还有修饰符,如public,private,staitc等;

    *②java的参数传递只有一种,即值传递。也就是说实参直接把其“值”付给了方法内的形参,无论形参的值如何变化,都与实参无关。这也就意味着一般情况下,我们无法在方法内对基本数据类型实参进行修改。而C++中还有指针传递、引用传递等,这两种传递方法可以实现在方法内对实参值的修改。(当然,凡事无绝对,我们可以org.omg.CORBA包中定义的持有者(holder)来实现对于基本数据类型的修改,见下例)

import org.omg.CORBA.IntHolder;
 
public class HelloWorld {
	public static void trip(IntHolder i)
	{
		i.value = i.value + 3;
	}
 
	public static void main(String[] args) {
		int a = 89;
        IntHolder aHolder = new IntHolder();
		aHolder.value= a;
        trip(aHolder);
        a = aHolder.value;
		System.out.println(a);
	}
}

5.2 方法重载

*发生方法重载的条件:在同一个类中,方法名相同,参数列表不同。与返回值类型无关。

*那么什么情况算是参数列表不同呢?①参数数量不同;②参数类型不同;③参数顺序不同。

猜你喜欢

转载自blog.csdn.net/gsafjhbfqwergerkbvgk/article/details/81431260