首页 > 编程语言 > 详细

Java基础知识总结

时间:2019-02-24 12:06:13      阅读:149      评论:0      收藏:0      [点我收藏+]

1.java中没有C++中的引用,change_value(int& p);在java中是编译不过的。

2.Android驱动 = Linux驱动 + 封装

3.Android系统的层次结构
Java <--> App
----------
FrameWork 难点
----------
封装 非常简单
----------
驱动 就是Linux的驱动

4.Android中检测耳机的机制和Linux的不同。有时候相机用不了,蓝牙用不了,这时候不仅仅需要查驱动,还要查整个框架。

5.推荐Java开发书籍: 《Java开发实战经典》李兴华
若自己安装Ubuntu,参考:韦东山第4期_Android驱动深度开发\韦东山Android系统视频使用手册20160303.pdf
硬盘至少预留80G
a.root分区:20G, 从中划出6G用作swap
b.work分区:60G,
c.内存4G

6.安装Java开发环境
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install openjdk-7-jre

注释:
1、apt-get update是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
2、apt-get update只是更新了apt的资源列表,没有真正的对系统执行更新。如果需要,要使用apt-get upgrade来更新。

7.C和Java类比
(1) C中是从main()开始执行,Java中也是一样的,只不过main的书写方式不同。
(2) C中需要包含头文件,Java中不需要。
(3) Java中无指针。
(4) C中malloc()分配的内存在程序退出后系统会自动帮你free(),若程序一直运行不退出,需要自己free();java中有new但是没有释放操作,
系统会帮助我们自动释放。eg: int p[] = new int[10]; p = null; 用来释放堆空间中的int[10]。java中的垃圾回收机制在没有引用的时候自动回收掉。也就是使用new来分配,不需要我们手动释放,把变量设置为null即可。
(5) java中数据类型转换比C中严格,eg: float pai = 3.14; 编译报错,3.14默认是double类型,不能自动转换成float类型。
(6) java中的运算符、表达式、语句 都和C中的完全一样。
(7) C语言中的函数成为函数,java中的函数称为方法。
(8) 在C中使用‘,’来分割打印的内容,在java中使用‘+’来分割,eg:system.out.println("before function2"+p[0]);

8.java中的数据类型转换
自动转换:能转换的前提是数据不丢失,注意整数默认是int, 小数默认是double

强制转换:暂无内容

错误:
  float f = 3.14;
修正:
  float f = (float)3.14; 使用强制类型转换 或 float f = 3.14f; 后面带个f表示是float类型

  short a = 4; 正确的,对于整数编译器会帮我们判断其范围,若是没有超过short的值域就是可以的。
  short a = 40000; short属于-32768--32767, 40000超过了short的表示范围,不能自动转换,报错。

  int i;
  short s;
  s = i; 这个肯定报错的,编译期不知道i的值是什么的。
  s = s + 1; 这个也会出错,因为加1可能溢出。或者说中间结果是int类型,编译时又不知道其值,所以不能转换成short类型。对于short byte类型的变量在运算的时候为了保证精度,中间结果都保存为int类型。修正:s = (short)(s + 1);
  s = s + s; 也会错误,因为为了保证精度,中间结果也是int类型,实际是先各自转换成int类型后再相加。


9.编译Java程序
  $ javac Hello.java
  $ ls
  Hello.class Hello.java 编译生成Hello.class可执行程序!!
  $ java Hello 启动java虚拟机,在这个虚拟机里面运行这个程序
  Hello world! 打印出Hello world!
  $

Hello.java 这个文件名中首字母大写的原因:Java的编程规范中类的名字的首字母要大写,而文件的名字要与类名保持一致。

TODO:翻译man javac, man java

10. Java的数据类型
基本数据类型:比C多了boolean和byte两个基础数据类型(多出byte的原因可能是Java使用unicode编码,char是2字节)

引用数据类型:数组、类、接口、null
(1) java中的所有数组永远都是引用数据类型,其元素都是放在堆空间的,即使是静态分配int p2[] = {1, 2, 3} p2存放在栈中,{1,2, 3}在堆中。
(2) 除了基本的数据类型之外所有的数据类型都是引用数据类型。

(3) C中的char str[] = "abc"; 在java中是不行的,"abc"是一个类,换成String str[] = "abc";是可以的。str在栈中,a b c 存储在堆中


11.UltraEdit中 文件->转换 可以实现多种编码格式之间的转换

12.重载的实现只与参数有关而与返回值无关的原因:需要根据参数匹配选择一个重载的函数,是不知道返回值是什么类型的,也就无法根据返回值类型进行匹配。

13.C中函数传参func(int *p) 在java中变为 func(int p[]), p[]就相当于C中的指针。


测试下面是可以的
char str2[] = new char[10];
char str3[] = str2;

TODO:
1.C中malloc()分配的内存在程序退出后系统会自动帮你free(),若程序一直运行不退出,需要自己free() !!

14.Java中返回字符串之间可以直接使用‘+’号,因为“guangdong”和name都是String类对象,String类重装了‘+’
String getName() {
  return "guangdong "+name;
}

15.类比C:Java中的类就相当于一个类型,对象就相当于一个变量

16.在一个.java源文件中只能有一个public class, 存在的其它class不能写成public的

17.构造方法格式:函数签名中无返回类型
eg:
访问权限 类名称(参数) {
  程序语句
}

18.类中有个属性name,参数又是name,若直接使用name=name;根据就近原则,使用的都是参数name。加上this修饰成员属性的name。this表示当前类或当前对象
public Person (String name) {
  this.name = name;
}

19.加static修饰的类成员属性或方法就不依赖与具体的对象就可以调用。static修饰的也可以直接在对象中调用。

20.代码块(构造块)
类似于构造函数,在创建一个对象的时候构造块会执行,而且是先执行构造块,再执行构造方法。在类中直接使用{}括起来的代码就称为构造块。
eg类的定义中直接:
{
  count++;
}

21.静态代码块
静态代码块最先执行,而且只执行一次,比如创建3个对象,只有在创建第一个对象的时候执行静态代码块,之后都不执行了。
执行顺序:先执行静态代码块(只一次),再执行代码块,再执行构造函数。
定义静态代码块:在类中直接加static{ }定义代码块。
static {
  代码块
}

22.类的{}后面可以加也可以不加‘;’

23.静态成员函数中不能引用非静态成员变量,因为不知道非静态成员变量是哪个类的,且不知道其是否存在。

24.面向对象程序设计三大特性:
①封装性:把属性和方法封装成一个整体,并加以访问权限控制。
②继承性:目的主要是复用代码
③多态性:方法的重载与复写

25.java中没有加任何权限修饰测成员变量的属性是default的,本包内可以访问,和C++的不一样,C++中成员属性默认是private的。

 

Java基础知识总结

原文:https://www.cnblogs.com/hellokitty2/p/10425684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!