我用来入门java的书是《head first java》
Java编译器不会让“长颈鹿”进入“兔子”的类型变量。
即:rabbit bugs = new giraffe();这种情况是永远不能通过编译的。
变量必须拥有两种东西:
1、类型(如int、double、float)
2、名称(随便啦)
注意:当我们说“X类型的Y对象”时,类型说的就是类。
变量的基本类型:
byte,short,int,long,float,double,bool,char
注意:float类型的对象赋值时后面要加f,不然编译器自动认为是double类型。(如:float f = 6.32f;)
命名规则
名称必须以字母、下划线(_)或$符号开头,不能用数字开头
·同时,命名规则要求,需要避开关键字(如:int byte = 1;不成立)
class dog
{
String name;
void jiao()
{
//输出“叫”这个动作
}
}
dog ada = new dog();
ada.jiao():
ada.name = "阿达";
由灵魂画作可知
ada这个对象代表的跟int ada或者double ada之类的意义不同。
准确的说,dog ada的ada是一个类似指针的引用,来指明整个阿达在哪里,我们想找到阿达只能通过dog ada来找。(好像有点绕)
感觉基础变量没大意思,倒是灵魂画作部分让我理解到了java跟c不大一样的部分,也算是有收获吧
简单语法
1、语句要用分号结束; //后面的是注释
2、空格、回车不影响语句的执行,但影响代码的可读性
比如:
while ( i > 5 ){...}
和
while(
i>5)
{...}
以“hello world”为例:
结果:
而:
结果:
功能相同,但可读性是完全不同的。
二、简单的结构
1、循环语句
- for(;;){...}
- while(){...}
- do{...}while()
2、条件语句
- if(){...}else
3、简单的bollean测试
”>“、"<"、"=="简单的比较符号,大于、小于、等于
注意”==(判断是否相等)“和”=(赋值)“意义不同
本节问答中有这么一个例子很有趣:
问:
int x=1;
while(x){...}
可以吗?
答:不行,Java中的integer与boolean两种类型并不相容,只能:
boolean isHot = true;
while(isHot){...}
即判断条件必须使用”布尔类型(bool)“
- while循环范例:
public static void main (String[] args)
{
int x=1;
System.out.println("循环前: x=" + x);
while(x<5)
{
System.out.println("循环中:x=" + x);
x = x + 1;
}
}
这是一个以输出来表达while运作模式的句子,结果如下:
- if范例
int x = 3,y = 4;
if (x == 3)
{
System.out.println("因为x=3所以我出现了");
}
if (y == 3)
{
System.out.println("因为y不等于3所以我不会出现");
}
结果如下:
还可以加上else
int y = 4;
if (y == 3)
{
System.out.println("因为y不等于3所以我不会出现");
}
else
{
System.out.println("你看我出来了就知道y确实不等于3");
}
结果如下:
下面让我把他们组合起来:
int x = 10;
String word="点血";
while(x > 0)
{
System.out.println("小明有" + x + word);
System.out.println("我打了小明一下");
x = x - 1;
if(x == 0)
{
System.out.println("小明挂了");
}
结果如下:
好的,小明挂了,我也有点累了下面就用一个书上的例子写一个变种吧,”起名器“
while(true)
{
String[] xing={"赵","钱","孙","李","周","吴","郑","王","冯","陈","褚","卫","蒋","沈","韩","杨"};
String[] ming={"最","新","姓","氏","人","口","数","量","排","名","由","国","务","院","人","口"};
int xingleng=xing.length;
int mingleng=ming.length;
int rand1=(int)(Math.random() * xingleng);
int rand2=(int)(Math.random() * mingleng);
String xingming = (xing[rand1]) + (ming[rand2]);
System.out.println(xingming);
}
所以不要迷信起名网站了....他们的程序我个初学者都能用几分钟模仿出来....
PS
for(:){...}这个函数可以用来遍历数组。用法为for(int i : 数组名){....}
如此就能遍历数组了,还有更具体的用法,目前不先细细研究。
又发现了一个很有趣的地方,Math.random()*x这一句,x是几,随机的数就是零到几减一
int x = 0;
(1)int z = x++
和
(2)int z = ++x;
这两个最后的结果是不同的,(1)情况最后结果x = 1,z = 0;(2)情况最后结果x = 1,z = 1;
继承
在之前椅子大战的时候我们提到过继承,现在正式学习。子类继承自父类,子类拥有父类的一切东西(除非父类的方法或者实例变量是private(私有)类型)。
继承的写法是:
这代表了dog类是test类的子类,test是dog的父类。
书上有个很有意思的例子,用六种动物类来继承“动物”这个大类,通过继承来防止子类中出现重复的程序代码。
首先,抽象出来动物的共有特点:picture、food、boundaries、location、makeNoise()、eat()、sleep()、roam()。
重写方法的办法是:
重写的时候:
使用的时候:
结果:
当我们要判断是不是要用继承时,可以用“是一个”、“有一个”来分辨。比如:
三角形是一个多边形
hellokitty是一个猫
澡盆是一个浴室(?)应该说浴室有一个澡盆
如此就能简单判断了,同时a是b的父类,b又是c的父类,那么我们也可以判断出c“是一个”a,比如:
正三角形是一个三角形,三角形是一个多边形,可以推出正三角形是一个多边形~
哦,还有一个super命令,使用方法为:
先执行原来的ad然后再执行之后的代码,是扩充函数又不想动之前功能的好办法。
那么,下次见~