一、运算符
分割符:,、;、[]、()
算术运算符:+、-、*、/、%、++、--
关系运算符:>、<、>=、<=、==、!=
布尔逻辑运算符:!、&、|、^、&&、||
位运算符:&、|、^、~、>>、<<、>>>
赋值运算符:= 扩展赋值运算符:+=、-=、*=、/=
字符串连接运算符:+
造型操作符:() 
其中位运算符^:
一个数与另一个数按位异或得到的结果再次与这个数相异或,结果被还原。
(A ^ B) ^ B == A
        1). A计划--->加密
2). 不通过第三方变量进行两个数的交换
    其中无符号右移位运算符<<<:
    其中作为字符串连接符的“+”:把字符串连接起来生成一个新的字符串对象返回。
字符串类型与其他任何类型的变量相“加”,其他的数据类型都会被自动转换成字符串类型。
其中三目条件运算符x?y:z中x必须为布尔类型。
    其中移位运算符中:如(13 >> 35)等价于(13 >> 3)
如何将一个数字转换成字符串?用“+”符号
二、程序结构
1、分支语句
    注意:if语句中括号内必须是一个布尔类型
            switch语句,表达式中的类型为byte/short/int/char    另String(在JDK1.7及以上版本合适)
            例:利用switch实现从健盘中输入星期几的字符串,按照输入的字符串输出相应的语句。
键盘输入即C语言中scanf函数在JAVA中的实现是:
Scanner sc = new Scanner(System.in);
String province = sc.next();
2、循环语句
for
while
do/while
break/continue
break可用于for/while/do-while/switch语句中,用于循环语句中,跳出一层循环。
可以使用加标签的方式,直接从内层循环跳出外层循环,相当C语言中的goto语句。
注意:所加的标签与C语言中不一样的地方,只能加在循环体的开头部分。
continue语句,结束当前的循环,进入下次的循环,它也能用加标签的方法。
三、数组
    数组是用来存储一组相同数据类型数据的数据结构
数组的元素可以是简单类型的数据,也可以是引用类型的数据
掌握数组的声明
掌握数组的初始化
   掌握数组的拷贝和排序
    一维数组用法四步走:
    1、声明
int[] a;
2、分配空间
a = new int[5];
    3、赋值
            a[0] = 8;
    4、数据处理
            a[0] = a[0] * 10;
任何数组对象都有一个length属性,直接返回数组长度。
在java中数组是严格检查边界的。
 Array.sort()方法  调用后会自动进行排序
public class ArraysSort{
public static void main(String args[]){
int[] a = {10, 3, 19, 2, 11, 15};
System.out.println("排序前:");
for(int i = 0; i < a.length; i++)
System.out.print(a[i]+"");
Arrays.sort(a);
System.out.println("排序后:");
for(int i = 0; i < a.length; i++)
System.out.print(a[i]+"");
}
}
数组值的拷贝
 System类的静态方法System.arraycopy()
参数:
---src-->源数组
---srcPos-->源数组中的起始位置
            ---dest-->目标数组
            ---destPos-->目标数组中的起始位置
            ---length-->要复制的数组元素的数量
    作用:从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
    多维数组的声明:
        int[][] intArray;
        double dbArray[][];
        int[][][] intArray;
        String strArray[][][];
        需要注意的是:
        (1)多维数组中当使用new来创建时,不必指定每一维的大小,但要指定最左边的维的大小。
        如:int[][] array = new int[2][];
        (2)二维数组: int[][] array = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};    array.length = 4(即行数),array[i].length = 3(指的是某一行的长度)
        (3)二维数组的声明和初始化应按从高维到低维的顺序进行,例如:
                   int a[][] = new int[3][];
                    a[0] = new int[2];
                    a[1] = new int[4];
                    a[2] = new int[3];
    

    public static void main(String[] args)中自带参数用法

public class test {

public static void main(String[] args){
for(int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
    参数设置方法:右击java源文件名选择run as,再选择run configrations,在打开的窗口中选择(x)=Arguments选项,然后在Program arguments文本框中输入参数,参数之间用空格或回车分开。
    数组实现堆栈的算法
stack类
测试程序
package stack;
public class stack {
int[] mystack;
int top;
int maxsize;
/*create empty stack*/
public stack(int max){
this.maxsize = max;
mystack = new int[max];
top = -1;
}
/*get stack size*/
public int get_size(){
return maxsize;
}
/*return element count*/
public int get_count(){
return top;
}
/*clear stack*/
public void clear_stack(){
top = -1;
for(int i = 0; i < mystack.length; i++){
mystack[i] = 0;
}
}
/*if stack full*/
public int full_stack(){
if(top == (maxsize-1)){
return 1;
}else{
return 0;
}
}
/*if stack empty*/
public int empty_stack(){
if(top == -1){
return 1;
}else{
return 0;
}
}
/*pop stack*/
public int pop_stack(){
return mystack[top--];
}
/*push stack*/
public void push_stack(int arg){
mystack[++top] = arg;
}
/*get top*/
public int get_top(){
return mystack[top];
}
}
package stack;
public class test {
public static void main(String[] args){
stack an = new stack(5);
if(an.full_stack() == 0){
an.push_stack(10);
}
if(an.full_stack() == 0){
an.push_stack(9);
}
if(an.full_stack() == 0){
an.push_stack(8);
}
if(an.full_stack() == 0){
an.push_stack(7);
}
if(an.full_stack() == 0){
an.push_stack(6);
}
if(an.full_stack() == 0){
an.push_stack(5);
}
while(an.get_count() > 0){
if(an.empty_stack() == 0){
System.out.println(an.pop_stack());
}
}
System.out.println(an.get_top());
}
}
四、继承
extends
子类继承父类所有的属性和方法。构造器除外。
特点:面向对象的重要特征
可以实现代码的复用
java只支持单继承,跟C++不一样。
即一个类父类只能有一个,子类可以有多个。
基本语法:
访问控制                    子类名                            父类
<modifier>    class    <name>    [extends<superclass>]
{
<declaration>*
}
在类、类的属性以及类的方法前面加修饰符可限定其访问权限,实现其在一定范围内的信息隐藏。
修饰符
同一个类中
同一个包中
子类中
全局
private
yes
default
yes
yes
protected
yes
yes
yes
public
yes
yes
yes
yes
父类
子类(并继承父类所有的东西)
测试程序
public class Animal {
String name;
int age;
float weight;
public Animal(){
super();
}
public Animal(String name, int age, float weight){
this.name = name;
this.age = age;
this.weight = weight;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public void setWeight(int weight)
{
this.weight = weight;
}
public float getWeight()
{
return weight;
}
public void eat(){
System.out.println("动物在吃...");
}
public void roar(){
System.out.println("动物在吼叫...");
}
}
public class dog extends Animal {
public void watchHome(){
System.out.println(getName()+"在看门");
}
}
/*新建子类时使用extends关键字,若使用eclipse创建子类时在新建向导框中的Superclass选项处填上父类名*/
public class Test {
public static void main(String[] args){
dog xiaobai = new dog();
xiaobai.setName("小白");
xiaobai.eat();
xiaobai.roar();
xiaobai.watchHome();
System.out.println(xiaobai.getAge());
}
}
方法覆盖(override)
子类重写父类的同名方法和父类成员变量同名的成员变量
1、方法名必须相同
2、参数列表必须相同
3、返回值类型必须相同
4、子类的权限只能更开放
5、抛出的异常只能列少
    @Override
super关键字
super代表着父类对象的一个引用。 
super关键字的用法
访问父类的成员变量—— super.变量
访问父类中被重写的方法——super.方法([参数列表])
访问父类的构造器——supe([参数列表])
    
    将“方法覆盖(override)”下截图中super.eat()及super.roar()前注释去掉,即访问父类中被重写的方法。
    父类与子类中同名的变量并不是在同一存储空间的。
关于构造器的super
创建子类对象时,要先创建父类对象。子类对象包含着父类对象。
当子类构造器没有使用super显示地调用父类构造器时,系统会默认地调用父类的无参构造器。

嵌入式软件开发培训笔记——Java第二天(运算符、程序结构、数组与继承)相关推荐

  1. 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)

    目录 掌握命令行参数的使用 掌握Math类中常用的方法 掌握String/StringBuffer/StringBuilder的用法 掌握几种常用集合类的用法 掌握日期和时间处理 1.命令行参数 Ja ...

  2. 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)

    一.掌握方法重载(Overload)     同一个类中方法名相同时,称为方法的重载(Overload)     特点:1.参数列表不同                     1)参数类型不同   ...

  3. 嵌入式软件开发培训笔记——C高级 开发环境

    (1)GNU工具: a)编译工具--GCC.G++: b)调试工具--GDB: c)软件工程工具--make.makefile: d)其他工具--多个目标文件链接成可执行文件的链接器 e)GNU资源: ...

  4. 嵌入式软件开发培训笔记——Linux下SQLite3数据库编程

    1.基本概念 数据库&数据库管理系统(DBMS) 关系型DBMS和SQL 通用型DBMS&嵌入式DBMS 2.SQLite 简介 命令行操作 库函数编程操作 3.数据库基本概念 1)数 ...

  5. 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写

    bootloader原理和开发-->kernel构建-->文件系统/根文件系统(filesystem/rootfs) APP 一.配置交叉编译环境(可参考嵌入式Linux移植与驱动开发co ...

  6. 嵌入式软件开发培训笔记——boot原理与u-boot 基于Cortex_A8核的S5PC100芯片

    一.boot原理 1.解决系统启动 (参考s5pc100手册 --->  2.1节 irom code) The boot loader is divided into the BL0(1st ...

  7. 嵌入式软件开发培训笔记——c编程基础

    参考书籍:大学电子或计算机专业C程序设计教程. 编译环境:linux操作系统下的gnu-gcc 完成c经典100题编写(题目在网上随处都能搜到) 一个很好的segment error检查方法 例程文件 ...

  8. 嵌入式软件开发培训笔记——C高级 结构体与共用体

    (1).结构体 基本类型       int.double.char.float.short.long等等 复合类型       数组.结构体 指针类型 空类型 1)定义结构体,不会在内存内给分配空间 ...

  9. 嵌入式软件开发培训笔记——C高级 指针和函数

    1.函数指针 2.指针函数 Int *function(int a,char *b) 函数返回值是一个指针 Int *p;    p = function(c,&d); 附:递归 在一个函体体 ...

最新文章

  1. 算力大战是BCH最坏的一种处理方式
  2. 如何在Atomic主机上远程使用 Docker
  3. 动态规划-换钱最少货币数
  4. Linux主机密码设置,Linux如何批量创建用户和设置密码
  5. 字典树(Trie)的java实现
  6. 装修月记第一弹,硬装篇
  7. JavaScript表单序列化的方法详解
  8. Oracle导出导入dmp文件(exp.imp命令行)
  9. linux内存平均值,linux下查看内存使用情况[转载]
  10. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
  11. python怎么画简单图-Python | 用matplotlib画些简单的图
  12. 无线网卡wifi破解
  13. 010Editor逆向分析
  14. 专业网络综合测试仪——TFN TT70网络综合测试仪
  15. php nette,如何在Ubuntu和LinuxMint设置Nette PHP框架
  16. c语言双向链表尾插法,双向链表 头插法 尾插法
  17. 51校园购==酷玩网
  18. Revit二次开发有几种方式?做Revit二次开发的必看!
  19. Flink教程(31)- Flink网络流控及反压
  20. 计算机游戏设计的艺术

热门文章

  1. 论文解读:《DeepIDC:基于异构信息和深度学习的注射用药物组合预测框架》
  2. 区块链改写P2P网贷监管格局
  3. Jmeter察看结果树中响应数据显示乱码
  4. 4个方面入手 TiledMap 地图优化!W字干货分享
  5. 【SQL开发实战技巧】系列(十四):计算消费后的余额计算银行流水累计和计算各部门工资排名前三位的员工
  6. 计算机科学导论大一,(计算机科学导论期末复习资料.doc
  7. mount: mounting 192.168.1.141:/root/rootfs on /opt failed: Permission denied
  8. 关于32位系统中int、float、short、double等占多少个字节
  9. 迁移率 计算方法及用途 风控建模系列 02
  10. 启用linux内核对usb摄像头的支持,linux利用USB摄像头