再探java基础——零碎基础知识整理
1.java是解释型语言。java虚拟机能实现一次编译多次运行。
2.JDK(java software Development kit 软件开发包),JRE(java Runtime Environment java运行环境)。
3.javac编译java程序,java运行java程序。
4.一个文件最多有一个public class。
5.java中switch语句只能探测int类型值(JDK1.6以前)。
6.在java中一个字节是八位,一个字符占两个字节(16位unicode字符串)。
7.内存中byte占1个字节,int占4个字节,long类型占8个字节;float占4个字节,double占8个字节;boolean类型占1个字节;
8.java不提供运算符的重载。
9.在static方法中不能访问非static的成员。static方法是指在函数前面加上static限定符,如:public static vooid main(String args[]);public static void print();
10.约定俗成的给package取名时把自己公司的域名倒过来,后面再跟上项目名。如:cn.edu.jxau.Game24。
11.默认的访问权限是default.
12.接口和接口之间可以继承,类和类之间可以继承,但是类和接口之间只能通过类来实现接口。一个类只能继承一个父类,但可以实现多个接口。
13.数组
一维数组的形式:
(1), int a[]; a = new int[5]; 等同于 int a[] = new int[5];
(2), int[] a; a = new int[5]; 等同于 int[] a = new int[5];
二维数组的形式:
int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}};二维数组可看成以数组为元素的数组。
java中多维数组的声明和初始化应按从高维到低维的顺序进行,如:
方法(1)
][];
];
];
];//正确
];//非法
方法(2);
int a[][] = new int[3][5];//正确,分配一个三行五列的二维数组。
学习C和C++的很容易出错
14.增强的for循环
优点:增强的for循环对于遍历array和collection的时候相当的简便。例如:
import java.util.*; public class EnhancedFor { public static void main(String args[]) { int arr[] = {1,2,3,4,5}; for(int i:arr) { System.out.println(i); } Collection c = new ArrayList(); c.add(new String("sss") ); c.add(new String("aaa") ); c.add(new String("bbb") ); for(Object o:c) System.out.println(o); } } |
缺点:数组,不能方便地访问下标值;
总结:除了简单遍历并读取其中的内容外,不建议使用增强的for循环。
15.泛型
JKD1.4以前类型不明确:
装入集合的类型都被当作Object对待,从而失去自己的实际类型;从集合中取出时往往需要转型,效率低,容易产生错误。
解决办法:
在定义集合的时候同时定义集合的类型;
可以在的定义Collection的时候指定;
也可以在循环时用Iterator指定。
好处:
增强程序的可读性和稳定性。
16.线程的基本概念:
(1),线程是一个程序内部的顺序控制流。
(2),线程和进程的区别:
每个进程都有独立的代码和数据空间(进程上下文),进程间切换会有较大的开销;
线程可以看成时轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计时器(pc),线程切换的开销小;
多进程:在操作系统中能同时运行多个任务(程序);
多线程:在同一个应用程序中有多个顺序流同时执行;
17.线程的实现
Java的线程通过java.lang.Thread类来实现。VM启动时会有一个由主方法(public static void main(){} )所定义的线程。可以通过创建Thread的实例来创建新的线程。每一个线程都通过特定的Thread对象的方法run()来完成其操作的,方法run()为线程体。通过调用Thread类的start()方法来启动一个线程。
18.能使用接口的时候不要从Thread类继承,因为用接口不仅可以实现接口的方法,而且还可以继承其他的类。
19.Sleep方法:Thread的静态方法(public static void sleep (long millis) throws InterruptedException) 使得当前线程休眠(暂时停止执行millis毫秒);
Join方法:合并某个线程;
Yield方法:让出CPU,给其他线程执行的机会。
20.synchronized (this) :锁定当前对象,在执行当前这个对象时不应许其他线程打断插入。使用的方式有:
(1),
class Timer { private static int num = 0; public synchronized void add(String name) { //执行这个方法的过程中锁定当前对象。 num ++; try { Thread.sleep(1); } catch( InterruptedException e) { return; } System.out.println(name + ",你是第" + num +"使用Timer的线程。"); } } |
(2),
class Timer { private static int num = 0; public void add(String name) { synchronized(this) { //锁定大括号这个区域的代码段 num ++; try { Thread.sleep(1); } catch( InterruptedException e) { return; } System.out.println(name + ",你是第" + num +"使用Timer的线程。"); } |
21.wait();使用wait()的前提是用synchronized锁住该方法。notify的作用是叫醒其它线程,notifyAll的作用是叫醒其它多个线程。
22.wait方法和sleep方法的区别:
(1),wait方法是Object类的方法,sleep方法是Thread类的方法。
(2),wait时,别的线程可以访问锁定的对象;调用wait方法时必须锁定该对象。
(3),sleep时,别的线程不可以访问锁定对象。
再探java基础——零碎基础知识整理的更多相关文章
- 再探java基础——break和continue的用法
再探java基础——break和continue的用法 break break可用于循环和switch...case...语句中. 用于switch...case中: 执行完满足case条件的内容内后 ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- 再探Java基础——String.format(String format, Object… args)的使用
最近看到类似这样的一些代码:String.format("参数%s不能为空", "birthday"); 以前还没用过这功能不知咐意思,后研究了一下,详细讲解如 ...
- 再探java基础——对面向对象的理解(2)
对象.类和抽象类的区别 对象是一个具体的事物,类是对具有相同属性和行为的一组对象的抽象,对象是类的一个一个人的具体实例:抽象类是一种特殊的类,是对类的进一步抽象,抽象类不能被实例化. 类.抽象类和接口 ...
- 再探Java基础——throw与throws
http://blog.csdn.net/luoweifu/article/details/10721543 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待 ...
- 再探java基础——对面向对象的理解(1)
对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...
- [转] 再探java基础——break和continue的用法
原文地址:http://blog.csdn.net/luoweifu/article/details/10756017 break break可用于循环和switch...case...语句中. 用于 ...
- Java虚拟机JVM相关知识整理
Java虚拟机JVM的作用: Java源文件(.java)通过编译器编译成.class文件,.class文件通过JVM中的解释器解释成特定机器上的机器代码,从而实现Java语言的跨平台. JVM的体系 ...
- Java并发编程相关知识整理
1.什么是进程.线程.多线程? 进程当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.进程间通讯依靠IPC资源,例如管道.套接字 线程是程序中的 ...
随机推荐
- Set Linux starts in multi-user mode as default.
ref: How to start Linux in multiuser mode rather than boot directly into XWindows (X11) steps: Log i ...
- Asp.Net 母版页
背景:回顾下以前用到过的asp.net控件 介绍: 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局.单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为.然后可以创建 ...
- 谈谈PHP、Python与Ruby
假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要,不要认为他们都图灵等价, ...
- 绘图时,根据size()和自定义rect编程的区别
在绘图的时候,很多时候编写的代码需要根据当前窗口自身的size来进行绘制,这个时候可以添加一个额外的中间rect来做过度,这样以后的绘图机制不会 随着size的变化而不断变化.你的处理逻辑可以保持不变 ...
- Yii2的相关学习记录,下载Yii2(一)
原先学习过Yii1的相关知识,虽然也是半懂不懂的,但稍微的结构是了解的.现在利用晚上的时间学习下Yii2的使用,打算建一个后台管理系统,这里记录下,以免自己以后忘记. 目前已看一部分Yii2的权威指南 ...
- python -i filename
今天学习的时候看见python -i filaname 这个命令,书上说使用这个命令可以去执行filename文件中的代码.但是今天在使用的时候却一直报错,经过多次测试才把问题解决. 原来这个命令是不 ...
- 3527: [Zjoi2014]力
题目大意:给出n个数qi,定义 Fj为 令 Ei=Fi/qi,求Ei. 设A[i]=q[i],B[i]=1/(i^2). 设C[i]=sigma(A[j]*B[i-j]),D[i]=si ...
- 实验五:分析system_call中断处理过程
原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 如果我写的不好或者有误的地方请留言 ...
- iOS 写入文件保存数据的方式
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeye ...
- html5 中常用的标签和属性
标签: <blockquote> 标签定义摘自另一个源的块引用. <blockquote> 与 </blockquote> 之间的所有文本都会从常规文本中分离出来, ...