java基础-基础语法备忘

由于笔者具有c和c++基础,所以这里不展开部分基础内容,如数据类型、流程控制等等。
如果需要查阅,请参考:java菜鸟教程

编程规范

  • 包名:小写字母序列 package com.example.demo;
  • 类名:首字母大写
  • 类实例:小写开头,后面首字母大写
  • 常量:都大写
  • import后空一行
  • 最后一个变量定义和第一个方法定义之间,方法彼此之间最好空一行

区分多行注释与JavaDoc?

多行注释:
/*
 * 这是多行注释
 * 这也是多行注释
 */
 
文档注释:一般用在类、方法和变量上面,用来描述作用。
/**
  * 文档注释
  * 多行注释
  */

JDK/JRE/JVM关系

java通过JVM实现跨平台特性,但是JVM不是跨平台的。
在这里插入图片描述

Java和C/C++的不同

  1. C++ 支持指针,而 Java 没有指针的概念。
  2. C++ 支持多继承,而 Java 不支持多重继承,但允许一个类实现多个接口
  3. Java 是完全面向对象的语言,并且还取消了 C/C++ 中的结构和联合,使编译程序更加简洁。
  4. Java 自动进行无用内存回收操作,不再需要程序员进行手动删除,而 C++ 中必须由程序释放内存资源,这就增加了程序员的负担。(当然程序员的控制权也变小了=。=)
  5. Java 支持操作符重载,操作符重载则被认为是 C++ 的突出特征。
  6. Java 允许预处理,但不支持预处理器功能,所以为了实现预处理,它提供了引入语句(import),但它与 C++ 预处理器的功能类似。
  7. Java 不支持缺省参数函数,而 C++ 支持 。
  8. C 和 C++ 不支持字符串变量,在 C 和 C++ 程序中使用“Null”终止符代表字符串的结束。在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的
  9. goto 语句是 C 和 C++ 的“遗物”,Java 不提供 goto 语句,虽然 Java 指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读。
  10. Java 不支持 C++ 中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

流程控制

带label的break

public static void main(String[] args) {
    outerLabel: for (int x = 0; x < 10; x++) {
        for (int y = 0; y < 8; y++) {
            System.out.println(y);
            if (y % 2 != 0) {
                break outerLabel;
            }
        }
    }
    System.out.println("Game Over!");
}
// 就是跳出label所在的循环,所以输出是
0
1
Game Over!

带label的continue

public static void main(String[] args) {
    label1: for (int x = 0; x < 5; x++) {
        for (int y = 5; y > 0; y--) {
            if (y == x) {
                continue label1;
            }
            System.out.println(x+","+y);
        }
    }
    System.out.println("Game Over!");
}
// 就是达到条件时,跳转到label处继续执行
// 有些源码会用,实际比较少用到

switch语句

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

逻辑运算符

&&(短路与) 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
||(短路或) 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
短路的会更快,应该优先考虑。

字符串常量

Java 的字符型常量值是用单引号引起来的一个字符,如 ‘e’、E’。需要注意的是,Java 字符串常量值中的单引号和双引号不可混用。双引号用来表示字符串,像 “11”、“d” 等都是表示单个字符的字符串。常量名一般全大写。

public class HelloWorld {
    // 静态常量
    public static final double PI = 3.14;
    // 声明成员常量
    final int y = 10;
    public static void main(String[] args) {
        // 声明局部常量
        final double x = 3.3;
    }
}

关于字符串直接量有一点需要指出,当程序第一次使用某个字符串直接量时,Java 会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java 会直接使用常量池(constantpool)中的字符串直接量。
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的 .class 文件中的一些数据,它包括关于类、方法、接口中的常量,也包括字符串直接量。
==比较的是内存地址,这里输出都是true说明内存地址是一样的。

String s0 = "hello";
String s1 = "hello";
String s2 = "he" + "llo";
System.out.println(s0 == s1); // true
System.out.println(s0 == s2); // true

类型转换

在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。转换规则如下:
数值型数据的转换:byte→short→int→long→float→double。
字符型转换为整型:char→int。

byte b = 50;
b = (byte)(b*2); // 这里必须加转换是因为b*2已经提升到int了,int到byte是降级,不能自动转换的。

在 Java 语言中,布尔类型的值不能转换成任何数据类型,true 常量不等于 1,而 false 常量也不等于 0。这两个值只能赋给声明为 boolean 类型的变量,或者用于布尔运算表达式中。

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型。

空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个 null 值赋给基本数据类型的变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值