10月31日超级数组
基础数据类型,引用数据类型,局部变量,必须手动初始化;
load link lnit(加载)类描述有哪些属性,方法;
加载 链接(验证,准备,解析) 初始化;
[图片上传失败...(image-c09086-1604582047075)]
一、元数据(描述数据的数据叫元数据);
元数据区存放:class的元数据(将来new的对象应有什么属性、什么方法);
常量;静态(static)的属性和方法
二、Class static:
class 的元数据(将来new的对象应该有什么属性,什么方法静态常亮)
静态变量
静态变量:全部大写,下划线隔开多个单词;
类名.
普通的:驼峰式命名
初始化:
引用:long
非静态变量
驼峰式命名
引用传递和值传递
值传递:形参拷贝实参的值,有内存分配和释放;不会改变原始值
引用传递:形参是实参的引用,没有内存分配;会改变原始值
完成菲波那切数列,完成例子。
递归:
- 方法自己掉自己
- 递归一定要有适当的退出条件
package com.xinzhi;
/**
* @author 荆少奇
* @date 2020/10/31
*/
public class Fibonacci {
public static void main(String[] args) {
System.out.println(Fibonacci(0));
}
public static int Fibonacci(int count){
if (count == 1){
return 0;
}
if (count == 2){
return 1;
}
if (count <= 0){
System.out.println("您输入的数值有误!");
return -1;
}
return Fibonacci(count-1) + Fibonacci(count-2);
}
}
三、包装类
包装类:Java为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类。
自动装箱:把一个基本类型变量直接赋给对应的包装类变量。(基本数值转成对象)
Integer num = 0;
自动拆箱:允许直接把包装类对象直接赋给一个对应的基本类型变量。(对象转换成基本数值)
int i = num;
基本数据类型 | 对应的包类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
字符串转换成基本数据类型:
parseXXX(String s);其中XXX表示基本数据类型,s 参数为可以转换成基本类型的字符串
将基本类型转换成字符串有3中方式
(1) 基本类型直接与“ ”相连接即可;eg:34 + “”
public class Test {
public static void main(String[] args) {
int a = Integer.parseInt(34 + "");
System.out.println(a);
}
(2) 调用 String 的 valueOf 方法:String.valueOf(34);
public static void main(String[] args) {
String a = String.valueOf(34);
System.out.println(a);
}
(3) 调用包装类中的 toString 方法:Integer.toString(34);
public static void main(String[] args) {
String a = Integer.toString(34);
System.out.println(a);
}
2、基本类型和对象转换
基本类型转换成包装对象(以 int 类型转换integer 对象为例)
Integer a = new Integer(2); //构造一个新分配的Integer对象,表示指定的int值
Integer b = new Integer("2"); //构造一个新分配的Integer对象,表示String参数所指向的int值
包装对象转换成基本类型(以 int 类型转换integer 对象为例)
int num = a.intValue(); //以int类型返回该Integer的值
四、超级数组
package com.xinzhi;
public class SuperArray {
private int[] array;
private int currentIndex = -1;
public SuperArray(int size) {
array = new int[size];
}
public SuperArray() {
this (10);
}
//排序
public void sort() {
for (int i = 0; i < currentIndex; i++) {
for (int j = 0; j < currentIndex - 1 - j; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public void add(int data) {
currentIndex++;
//油标加完之后越界,就扩容
if (currentIndex >= array.length){
int[] temp = new int[array.length * 2];
for (int i = 0; i < array.length; i++) {
temp[i] = array[i];
}
array = temp;
}
array[currentIndex]=data;
}
//删除
public void deleteTail(int index){
if (index < 0 || index > currentIndex){
System.out.println ("您输入的下标有误!!!");
return;
}
for (int i = index; i < array.length-1; i++) {
array[i] = array[i+1];
}
currentIndex--;
}
public void print(){
System.out.println ("***************结果*********************");
for (int i = 0;i <= currentIndex; i++){
System.out.println (array[i]);
}
}
public String toStr(){
String res = "";
for (int i = 0; i < currentIndex; i++) {
if(i == currentIndex){
res += array[i];
}else{
res = res + array[i]+",";
}
}
return res;
}
public int[] get(){
return array;
}
public void add() {
}
public void delete(int i) {
}
}
调用
package com.xinzhi;
public class test {
public static void main(String[] args) {
SuperArray superArray = new SuperArray (3);
superArray.add (4);
superArray.add (3);
superArray.add (1);
superArray.add (8);
superArray.add (6);
superArray.add (8);
superArray.add (12);
//删除
superArray.deleteTail (2);
//输出
superArray.print ();
System.out.println (superArray.toStr ());
int[] ints = superArray.get ();
}
}