目的
今天开始学习Java语言的第一天,还算是比较轻松;开始便简单了解Java的创建历史和发展轨迹,而从之前对C语言的学习转到了Java语言的学习,需要稍微更改一下自己的思维方式以及要时刻记得“Java语句中任何都可以作为对象”这句话;并且今天学习掌握了如何使用Android Studio建立Java工程,也算是为以后的学习找好了最基本的工具;同时,理解了Java语言中输入、输出等这些语句的使用方法,辨别其与C语言的区别;最后更是使用Java语言重新写了约瑟夫环游戏的代码,加深对Java的理解
Java语言特性
1. 易学:
Java语⾔言的语法与C语言和 C++语言很接近,使得大多数程序员很容易易学习和使⽤用Java
2. 面向对象:
Java语言提供类、接 口和继承等
3. 健壮:
Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证,并且丢弃指针
4. 安全:
Java通常被用在网络环境中,为此,Java提供了了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如 分配不同的名字空间以防替代本地的同名类、字节代码检查。
Java的数据类型
char short int long double float bool
注意 定义float型的时候,需要在数据后面加上f,否则可能会被当做double
float version = 9.0f;
而定义long型的时候,按照规定最好在数据后面加一个L
long size = 1234L;
布尔类型boolean只有真假(true/false)与c语言(非0即真不同)
boolean isExist = true;
System.out.println(isExist);
Java的类
- 在同一个源文件里面可以创建多个类
- 所有类都会在结构里面暴露出来
- public 修饰的类 这个文件的名称必须和这个类名相同
public class Myclass{
}
- 一个源文件里面只有一个public修饰的类
java的主函数
public static void main(String[] args){}
- 提供一个main方法作为入口点
- public 入口方法 需要外部调用
- static 静态方法优先于类 在类加载之前就提前被加载 在编译的时候先被加载
- void main方法不需要返回值 GC机制 自动释放
GC的基本原理
Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。
对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为"不可达的".GC将负责回收所有"不可达"对象的内存空间。
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象(详见 参考资料1 )。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的".当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性。本文研究了几个与GC工作相关的问题,努力减少这种不确定性给Java程序带来的负面影响。
Java的基本使用
定义数组
定义一个数组,一定要确定元素的个数
int[] scores = new int[5];
scores[0] = 1;
System.out.println(scores[0]);
字符串
String name = "Jack";
String[] names = new String[5];
names[0] = "merry";
System.out.println(names[0]);
输出
print默认不会自动换行,println默认自动换行;输出一句话的时候,不用再使用%d这些,而是直接使用变量
System.out.print("hello\n");
System.out.print("world\n");
//Android 9.0 size is 1234.
System.out.println("Android "+version+" size is "+size+".");
输入
1.创建一个Scanner扫描仪
终端输入 文件 字符串
Scanner sc = new Scanner(System.in);
2.开始接收一个整数
int num = sc.nextInt();
boolean b = sc.nextBoolean();
hasNext() 判断是否还有数据
while (sc.hasNext()){
int num = sc.nextInt();
System.out.println("输入的内容是:"+num);
}
或者
for (int i = 0;i<3;i++){
int num = sc.nextInt();
System.out.println("输入的内容是:"+num);
随机数产生
Random r = new Random();
int num =r.nextInt(100);
System.out.println(num);
约瑟夫环游戏的编写
package swu.lsb.day1;
import java.util.Scanner;
public class MyClass {
public static void main (String[] args) {
int num = 0;
//创建一个Scanner对象 用于接收终端的输入
Scanner scanner = new Scanner(System.in);
//提示输入参加的人数
System.out.print("请输入参与的人数:");
num = scanner.nextInt();
//定义一个数组保存所有的编号
int[] temp = new int[num];
//开始编号
for (int i = 0;i < num;i++){
temp[i] = i+1;
}
//提示输入死亡号码
System.out.print("请输入死亡编号:");
int killerNumber = scanner.nextInt();
int killed = -1;
int count = 0;
int totalKilled = 0;
//开始游戏
for (int i = 0;i < num;i++){
//判断i指向的那个人是否已经死亡
if (temp[i] != killed){
//这个人报数
count++;
//判断报的数是否是死亡号码
if (count == killerNumber){
System.out.println(temp[i]);
//杀掉这个人
temp[i] = killed;
//杀人总数+1
totalKilled++;
//清零
count = 0;
//判断是不是还剩一个人
if (totalKilled == num-1) {
break;
}
}
}
//判断是否是最后一个
if (i == num-1){
i = -1;
}
}
//输出数组
for (int i = 0;i < num;i++){
System.out.print(temp[i]+" ");
}
}
}
心得体会
今天的Java学习算是开了一个好头,继续加油,慢慢来