java基础知识01——基础知识

第一个程序编译运行
基本数据类型
修饰符

编译运行

编译运行第一个程序:
Ubuntu下,安装jdk
$ sudo apt install openjdk-8-jdk-headless
编译java程序:(文件名需要与类名一致,实现main方法)

ly@ubuntu:~/project/java_learn$ cat helloWorld.java
public class helloWorld {
    /* 第一个Java程序
     * 它将输出字符串 Hello World
     */
    public static void main(String[] args) {
        System.out.println("Hello World"); // 输出 Hello World
    }
}

编译: javac helloWorld.java
执行: java helloWorld
<遇到编码问题,编译:javac -encoding UTF-8 helloWorld.java >

注意事项
编写 Java 程序时,应注意以下几点:
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)
主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行

源文件声明规则
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:
一个源文件中只能有一个 public 类
一个源文件可以有多个非 public 类

源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee,那么源文件应该命名为Employee.java。
如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。
如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。
import 语句和 package 语句对源文件中定义的所有类都有效
程序例子
https://github.com/liuyan2010/java_learn.git
参见 HelloWorld.java 与 Employee.java

基本数据类型

byte 数据类型是8位、有符号的,以二进制补码表示的整数;
short 数据类型是 16 位、有符号的以二进制补码表示的整数
int 数据类型是32位、有符号的以二进制补码表示的整数;
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
boolean数据类型表示一位的信息;
char类型是一个单一的 16 位 Unicode 字符;

<变量赋值的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制>
见程序: PrimitiveTypeTest.java

自动类型转换
由低到高的规则:byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。
  2. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  3. 转换过程中可能导致溢出或损失精度
  4. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

修饰符

privated,protected,public以及default(没有修饰符)
修饰符访问权限
修饰符public:类可以用修饰符public声明,在这种情况下,类对所有类都可见。如果一个类没有修饰符(默认,也称为package-private),它只在自己的包中可见
修饰符private:指定该成员只能在其自己的类中访问
修饰符protected:指定该成员只能在其自己的包中访问,此外还可以由另一个包中的该类的子类访问

  1. 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
  2. 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

<实例方法:一个方法如果不加static关键字,那么这个方法是实例方法。意思是他属于类的某个实例,通过这个实例调用它,对类的其他实例不产生影响。
类方法:也称静态方法。在方法前加static关键字,就代表这个方法属于这个类本身,不属于他的任何实例。意思就是说,这个方法可以不通过实例进行调用,并且所有的实例都共享这一个 方法,对方法的调用各个实例相互可见。>

非访问修饰符
static 修饰符:用来修饰类方法和类变量。静态变量与静态方法
final 修饰符:用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符:用来创建抽象类和抽象方法。
抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
抽象方法:一种没有任何实现的方法,该方法的的具体实现由子类提供。
抽象方法不能被声明成 final 和 static
任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类
synchronized 和 volatile 修饰符

  1. synchronized 关键字声明的方法同一时间只能被一个线程访问
  2. volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值

transient 修饰符:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。即不会被保存在文件中,取出来时值是不确定的。
对象序列化:有些对象可能很重要但却占用不小的空间,往往一时半会还用不到,那么将它们放置内存中显然是一种浪费,因此放到文件中存储,使用时取出来

可变参数
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法
在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明
参考程序:VarargsDemo.java

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值