Java基础知识(二)

  • Java基本数据类型

内置/引用数据类型

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);

System.out.println("包装类:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

字节数/取值范围

  • Java运算符

算术/关系/位/逻辑/赋值/条件/InstanceOf/运算符优先级

(移位操作<<左移、右边移空的部分补0,>>右移、若最高位为0、左移空的位填入0、若最高位为1、右移空的位填入1,>>>无符号右移不论最高位为0还是1,左边被移空的位都填入0

一个数左移N位,即这个数乘以2的N次方,一个数右移N位,即这个数除以2的N次方

运算符优先级(一般用(),以免产生错误的运算顺序)

数据类型转换(显式<高精度向低精度转换、精度损失数据溢出,强制类型转换>与隐式<低级类型向高级类型转换,byte<short<int<long<float<double)除boolean类型外。

  • 循环结构

While/do、、、while/for

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while循环和while循环相似,不同的是,do…while循环至少会执行一次


break主要用在循环语句或者switch语句中,用来跳出整个语句块。 break跳出最里层的循环,并且继续执行该循环下面的语句。

continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。 for循环中,continue语句使程序立即跳转到更新语句。 在while或者do…while循环中,程序立即跳转到布尔表达式的判断语句。

  • Java 分支结构 - if...else/switch

switch语句(表达式的值必须是整型或字符型,不能是实数或字符串case的常量值必须不同

  • Java方法

语句的集合,它们在一起执行一个功能

方法是解决一类问题的步骤的有序组合。方法包含于类或对象中。方法在程序中被创建,在其他地方被引用。

修饰符/返回值类型/方法名/参数类型/方法体


注意:在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。

方法重载:

方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

finalize()方法

Java允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做finalize( ),它用来清除回收对象。例如,你可以使用finalize()来确保一个对象打开的文件被关闭了。finalize()方法里,你必须指定在对象销毁时候要执行的操作。

Java方法

方法重载/输出数组元素/汉诺塔算法/斐波那契数列/阶乘/方法覆盖/instanceOf 关键字用法/break 关键字用法/continue 关键字用法/标签(Label)/enum 和 switch 语句使用/Enum(枚举)构造函数及方法的使用/for 和 foreach循环使用

/*

  具体说明如下:

方法名相同

    方法的参数类型,个数顺序至少有一项不同

    方法的返回类型可以不相同

            方法的修饰符可以不相同

    main方法也可以被重载

    */

//输出数组元素

//通过重载 FunctionTest类的 printArray 方法输出不同类型(整型, 双精度及字符型)的数组

//汉诺塔算法

/* 这个传说就演变为汉诺塔游戏,玩法如下:

1.有三根杆子A,B,C。A杆上有若干碟子

    2.每次移动一块碟子,小的只能叠在大的上面

3.把所有碟子从A杆全部移到C杆上*/

//递归算法

private static void doTowers(int nDisks, char from, char inter, char to) {

// TODO Auto-generated method stub

if(nDisks == 1){

System.out.println("disk 1 from " + from + " to " + to);

}else {

doTowers(nDisks-1, from, to, inter);

System.out.println("disk " + nDisks + " from " + from + " to " +to);

doTowers(nDisks-1, inter, from, to);

}

}

/* // 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……

特别指出:第0项是0,第1项是第一个1。

这个数列从第三项开始,每一项都等于前两项之和。*/

private static long fibnacci(int counter) {

// TODO Auto-generated method stub

if((counter == 0)||(counter ==1))

return counter;

else

return fibnacci(counter-1) + fibnacci(counter-2);

}

// 一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!。

//亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

private static long factorial(int counter) {

// TODO Auto-generated method stub

if(counter <= 1){

return 1;

}else{

return counter * factorial(counter - 1);

}

}

//方法覆盖(Overriding):如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法

//instanceOf 关键字用法

//instanceof是Java的一个二元操作符,类似于 ==,>,<等操作符。

//instanceof是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean的数据类型

 

//Java break语句可以直接强行退出当前的循环,忽略循环体中任何其他语句和循环条件测试

//Java continue 语句语句用来结束当前循环,并进入下一次循环,即仅仅这一次循环结束了,不是所有循环结束了,后边的循环依旧进行

//Java 中的标签是为循环设计的,是为了在多重循环中方便的使用break和coutinue

//Java创建枚举类型要使用 enum关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类

//Enum(枚举)构造函数及方法的使用

enum Car_1 {

lamborghini(900),tata(2),audi(50),fiat(15),honda(12);

private int price;

Car_1(int p) {      

price = p;

}

int getPrice() {

return price;

}

}

System.out.println("所有汽车的价格:");

for(Car_1 c : Car_1.values()){

System.out.println("\t" +c + " 需要 " + c.getPrice() + " 千美元。");

}

//for 和 foreach循环使用

//for 语句比较简单,用于循环数据

//foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。

定义方法时,方法需要的参数是形参,调用方法时,送入的参数是实参,当形参是对象类型时,表示需要一个“对象的地址”,而不是一个对象本身。

java的参数传递只有一种方式,那就是:传值(传拷贝)

普通的方法是非静态方法(对象方法)this是普通方法的隐藏参数;

静态方法就是不需要对象就可以执行的方法,静态方法没有this指针;

静态变量不依赖于对象,public 类型的静态变量就相当于c中的全局变量

  • Java数组

Java语言中提供的数组是用来存储固定大小的同类型元素

注意:建议使用dataType[]arrayRefVar的声明风格声明数组变量。 dataType arrayRefVar[]风格是来自C/C++语言,在Java中采用是为了让 C/C++ 程序员能够快速理解java语言。

数组的元素是通过索引访问的。数组索引从0开始,所以索引值从0到arrayRefVar.length-1

数组(相同数据类型的一组数据的集合),数组看做对象,复合类型,int [] a; 使用new关键字为数组分配内存.

数组的长度表示需注意:x.length与字符串不同(s.length())。串池中不重复,不回收垃圾。

 


Java数组实例

//数组排序及元素查找

//使用sort()方法对Java数组进行排序,及如何使用binarySearch()方法来查找数组中的元//素,这边我们定义了printArray()方法来打印数组

//数组添加元素

//使用sort()方法对Java数组进行排序,及如何使用insertElement()方法向数组插入元素

//添加元素,参数的含义

private static int[] insertElement(int array[],int element,int index){

int length = array.length;//获取原数组的长度

int destination[] = new int[length + 1];

System.arraycopy(array, 0, destination, 0, index);//进行复制

//printArray("数组排序", destination);

destination[index] = element;

System.arraycopy(array, index, destination, index + 1, length - index);

//printArray("数组排序", destination);

return destination;

}

//获取数组长度

//使用数组的属性 length 来获取数组的长度

//数组反转

//使用 Collections.reverse(ArrayList) 将数组进行反转

//数组获取最大和最小值

//通过 Collection 类的 Collection.max() 和 Collection.min() 方法来查找数组中的最大和最小值

//数组合并

//通过 List 类的 Arrays.toString () 方法和 List 类的 list.Addall(array1.asList(array2)

//方法将两个数组合并为一个数组

//数组填充

//通过Java Util类的Array.fill(arrayname,value)方法和Array.fill(arrayname ,starting index ,ending index ,value) 方法向数组中填充元素

//删除数组元素,使用 remove () 方法来删除数组元素

//数组差集 ,使用 removeAll () 方法来计算两个数组的差集

//数组交集

//使用 retainAll () 方法来删除包含在另外一个数组中的数组元素

//在数组中查找指定元素 ,使用 contains () 方法来查找数组中的指定元素

//contains(Object o),如果此列表中包含指定的元素,则返回 true

//判断数组是否相等,使用 equals()方法来判断数组是否相等

//数组并集,使用 union()方法来判断数组是否相等

//求两个字符串数组的并集,利用set的元素唯一性

public static String[] union(String[] arr1,String[] arr2){

Set<String> set = new HashSet<String>();

for(String str : arr1){

set.add(str);

}

for(String str : arr2){

set.add(str);

}

String[] result ={};

//返回一个包含此 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型

return set.toArray(result);

}

计算机(严格按指令执行)与指令(最终目标:影响内存或寄存器的值),定义变量(申请内存)、赋值(拷贝与覆盖),计算机是存储和处理数据的电子设备,包括硬件和软件,计算机程序即软件,对计算机操作的指令。

面向对象语言:C++ delphi VB Java smallTalk 面向对象的程度↑ 运行的速度↓

注释三种

//单行

/*…*/单行和多行(多行注释中可以嵌套单行注释,但不可嵌套多行注释)    /**…*/文档注释 Javadoc文档

变量(内存空间),变量名,变量值

常量(constant,final)通常使用大写字母final变量为“成员变量”时,必须在定义时就赋初值

系统的内存:系统区(OS)、程序区(Program)、数据区(Data)

基本(数值型-整数和浮点类型,字符型,布尔型)和复合数据类型

三种进制,十进制、八进制(以0开头)、十六进制(以0x或0X开头)

各个数据类型的字节数

byte(8位) short(16位) int(32位) long(64位) char (16位,单引号)boolean(1位)

true和false,缺省为false) float(32位不能用于逻辑判断) double(64位)

转义字符,以“\”开头

标识符(由字母、数字、下划线、$组成,以字母、下划线和$开头

Java基础复习:http://blog.csdn.net/simplebam/article/details/65447600?locationNum=2&fps=1

JDK1.8新特性:http://blog.csdn.net/simplebam/article/details/58208789


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值