第一章主要是学会基本的变量和范围,在加上简单的函数定义,调用等。
老规矩第一步是hello word和输出测试,学会使用输出函数 c的printf函数 c#的message函数,用来测试输出的,在java中就是
class Untitled {
public static void main(String[] args) {
System.out.println("hello new world!");
}
}
这里还没有用ide,在线的java代码执行https://tool.lu/coderunner/
数据类型
基本类型无非数字(整形 浮点 )字符 字符串等 集合--也就是数组
定义方法同一般的一样:类型 变量名[=变量值][,变量名[=变量值]];
也就是可以初始化 可以不初始化 可同时定义多个变量
class text {
public static void main(String[] args) {
int a,b;
int c=3;
int d,e=3;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
警告:a,b,d未初始化 不可以使用,初始化之后输出如下
开始正式变量类型
int a=3; //整形
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 6; // 声明字节
String s = "runoob"; // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量
char x = 'a'; // 声明变量 x 的值是字符 'x'。
//Java的数据类型分为8种,分别是:byte、short、int、long、float、double、char以及Boolean,
关于数据类型的转换,在高级的向低级的时候可以隐式转换,例如
byte 8位、有符号 short 16位、有符号 int类型 32位有符号 long类型64位有符号
float 32位 double64位 char 16位无符号整数
//什么是高位往低转换 大概就是
long aa = int + int 那么得到的结果可以从int隐式转换为long
//但是如果long转换为int 则会造成损失 因为long是更加长的可以表示更大范围的数字
int bb=(int)longnum; 强制将一个long类型进行转换为int
对了补充一下 在定义long类型数字时候需要L
long longnum=1234567L;
//数字可以隐式转换为字符串输出 不用特意转换
int a = 123;
String str = new String("123"+str);
byte的区别在于它是一个8位的一个字节 int是32位的四个字节,常用的就是二者的转换,简单看一下就是移位和强制转换(了解一下就可以)
//https://www.cnblogs.com/langren1992/p/4717241.html
public static byte[] int2byte(int res) {
byte[] targets = new byte[4];
targets[0] = (byte) (res & 0xff);// 最低位
targets[1] = (byte) ((res >> 8) & 0xff);// 次低位
targets[2] = (byte) ((res >> 16) & 0xff);// 次高位
targets[3] = (byte) (res >>> 24);// 最高位,无符号右移。
return targets;
}
java没有结构体
java需要自己使用class来实现结构体的数据结构和功能,举一个简单的例子
public class Test
{
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
//原文:https://blog.csdn.net/fyp19980304/article/details/80448060
//把要存储的数据设为public变量,在其他主函数类中直接访问修改。
class Supply implements Comparable<Supply>{
int number;
int max;
int spend;
如果想要自己实现一些功能,只能继承一些接口,或者是自己写了。
java里也是有数组的
普通数组
double[] myList; // 首选的方法
//或
double myList[]; // 效果相同,但不是首选方法
//Java语言使用new操作符来创建数组,语法如下:
arrayRefVar = new dataType[arraySize];
//数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
//另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
遍历方法可以是下标遍历 可以是元素遍历
for(type element: array)
//直接使用element访问
for(int i=startindex;i<endindex;i++)
//使用array[i]访问
ArrayList
ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:
动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小
ArrayList List = new ArrayList();
//可以规定泛型T
import java.util.ArrayList;
import java.util.Iterator;
class example {
public static void main(String[] args){
//ArrayList<int> al = new ArrayList<iny>(); 这句是错的 这个列表需要使用包装类型 不能使用原本的int
//int用Integer
//double用double
//float 用Float
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);
al.add(2);
//三种遍历方法
for(int temp:al)
{
System.out.println(temp);
}
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
//使用迭代器 进行遍历
Iterator<Integer> it=al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
//默认的构造器,将会以默认(16)的大小来初始化内部的数组
public ArrayList(ICollection);
//用一个ICollection对象来构造,并将该集合的元素添加到ArrayList
public ArrayList(int);
//用指定的大小来初始化内部的数组
里面常用的方法是:
Add方法用于添加一个元素到当前列表的末尾
AddRange方法用于添加一批元素到当前列表的末尾
Remove方法用于删除一个元素,通过元素本身的引用来删除
RemoveAt方法用于删除一个元素,通过索引值来删除
RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
另外,还有几个类似的方法:
Clear方法用于清除现有所有的元素
Contains方法用来查找某个对象在不在列表之中
没必要一一演示,会的直接用 不会的需要的自己查就可以。
//函数定义 特殊的是多个不限制输入的
public class Varable {
public static void main(String[] args) {
System.out.println(add(2, 3));
System.out.println(add(2, 3, 5));
}
public static int add(int x, int... args) {
int sum = x;
for (int i = 0; i < args.length; i++) {
sum += args[i];
}
return sum;
}
}