1510988116 发表于 2017-5-31 19:56

想学Java的可以看看我做的笔记,很简单,后续继续更新笔记

本帖最后由 1510988116 于 2017-6-3 12:20 编辑

注释:
[*]被注释的代码,编译器忽略。作用:说明代码的作用:程序中适当加注释;屏蔽无用的代码
[*]使用“//”注释一行,//之后的代码,编译器会忽略
[*]/**/注释多行代码,这种属于文档注释
[*]注释不用太多,也不能太少

关键字(Keyword)
[*]Java定义了一些关键字(public/static/void/class/int),这些关键字是构成Java基本语法用的,这些关键字的特征就是在eclipse中颜色是紫色的
[*]goto、const在Java中没有意义,但是是保留的,变量,类的名字也不能用这两个,他们也被叫做“保留字”,不用知道goto、const是什么意思的
[*]main、String、System等这些都不是关键字

标识符
[*]标识符是用来给类、方法、变量等命名用的。
[*]命名规则:一:由字母,中文(不推荐)、数字、下划线_、$组成;二:不能以数字开头;三:不能是关键字
[*]java语言是大小写敏感的:demo和Demo是两个东西
[*]驼峰命名法:每个单词第一个字母大写:ageOfBaby
[*]标识符要有意义:标识符的命名规范,不是强制规定,而是“潜规则”;类名:大写开头;变量名、方法名:小写开头

变量(variable)
[*]数据一般都是放在内存中,那么操作内存的过程就需要地址,通过指向内存的指针操作内存,变量是给这段时间内存取一个名字,如果要告诉别人如何使用内存,那么就需要给这块区域起个名字,比如price,那么price就是变量名

               en-resource://database/522:0
[*] 我们可以吧price变量指向内存的值改为3、5、10,但是能不能改成“tom”呢?显然“一斤菜hello元”是没有意义的,所以这块内存中能够放什么类型的数据是有限制的,这就是“变量类型”。
[*]定义一个变量的格式:变量类型变量名=初始值;

变量作用域初步
[*]变量在{ }范围之内定义不能重名,定义一个int b=3;再定义一个int b=10;编译出错
[*]int b;然后直接println(b);是不行的,因为没有赋初始值。局部变量使用前必须赋给初值。声明时赋值或者使用前赋值都可以。

数值类型:
[*]整数类型:byte(字节),short(短整形),int(整形),long(长整形)
[*]小数类型:float(单精度浮点数),double(双精度浮点数)
[*]en-resource://database/524:0
[*]byte是“字节”类型,代表一个8位二进制,也就是一个字节。
[*]整数常量默认是int类型,小数常量默认是double类型。
[*]选用数据类型的时候在考虑到数据的可能范围之后,选择最小范围的类型,这样节省资源。

整数类型:
[*]long>int>short>byte ;double>float
[*]声明赋值:byte b1=5;short s1=10;int i1=20; long l1=30;
[*]如果声明超过范围的数,会怎么样:byte b2=500;//不能从int转换为byte;
[*]怎么声明long?long l2=99999999L(最好大写,否则分不清)

整数类型转换(Type cast)
[*]byte b=3;int i=b;//隐式类型转换(小的赋值给大的,不需要转换,别人看不到)
[*]如何把int赋值给byte:(编程经常用)
[*]int i=999,byte b= i;报错可以理解,为什么“byte b=3”可以,“int i=3;byte b=i”就不可以?为什么byte b=(byte)i;又可以?
[*]因为(byte)i就相当于,编译器保证,虽然我是比你大,但是我保证我的值在你的范围之内,不会超出范围

小数数据类型
[*]声明常量(double>float)
[*]double d1=3.14D;//ok,3.14d也可以
[*]double d2=3.14;//ok,一般不用谢“D”
[*]double d3=3;//ok
[*]float f1=3.14//error;不能从double转换为float,小数默认是double
[*]float f2=3.14F;//ok,3.14f也可以
[*]结论:“大范围”=“小范围”;隐式转换

                  “小范围”=“大范围”;显式转换,编译器担保不出事
          都是整数参与乘除运算,结果还是整数。整数常量参与乘除计算一般加f声明为小数类型,避免精度损失
常用数据类型;
[*]boolean:true/false
[*]String:“是什么”

               en-resource://database/528:0
   3、int:最大值integer.MAX_VALUE;最小值:Integer.MIN_VALUE
   4、int转换为String:Integer.toString(i);String转换为int:Integer.parseInt(“33”)
   5、显示类型转换仅限整数、小数类型之内。
   6、double转换为String:Double.toString(d);String转换为double:Double.parseDouble(s)
   7、char:‘a’和 "a"的区别
基本运算符:
[*]运算符就是加(+)减(-)乘(*)除(/)等符号
[*]求余数运算符“%”:5%4为1。5%5为0。22%7为1
[*]自增:++是对一个变量进行自增运算(用System.out.println显示方便点)
[*]自减:-
[*]+还可以与其他类型拼接:“hello"+5
[*]java中表达式从左向右扫描进行扫描运算,一旦遇上一个字符串,之后的运算就变成字符串了。(3+5+“hello”+5+3=8hello53))

赋值运算符
[*]int i=5;应该读成“声明int类型变量i,并且把5赋值给i”
[*]int x=10;x=x+5;看x=x+5从数学上来讲是一个错误。但是按照"赋值"的读法就可以理解了。
[*]因此x++等价于x=x+1;
[*]x+=5等价于x=x+5;
[*]x++和x+=1一样,还可以-=,*=、%=

Scanner可以获得用户输入:
Scanner sc=new Scanner(System.in);
System.out.println("请输入年龄");
int age=sc.nextInt();
Stirng s=sc.nextLine();//这个可以自动换行
基本数据类型的赋值;
[*]基本数据类型是复制传递

int i=10;
int j=i;
i=20;
System.out.println(j)
   2、如何交换两个int变量的值
int i=10;
int j=20;
int temp=i;//temp属于中间变量
i=j;
j=temp;
System.out.println(i,j);
另外有一只不需要中间变量的做法
int i=3;
int j=5;
i=i+j;//两个加起来减去一种一个,就能得到自己想要的那一个
j=i-j;
i=i-j;
比较运算符:
[*]比较运算符(又称关系运算符)用来进行值得真假性判断,结果是boolean
[*]==等于;!=不等于;>大于;>=大于或者等于;<小于;<=小于或者等于

System.out.println(3==5)
int i=9;
System.out.println(i>=3)
System.out.println(i==3);
也可以把比较的结果赋值给boolean类型变量;
int a=4;
int b=5;
boolean flag=a==b;
System.out.println(flag);
    3、除了int、boolean等这些基本类型之外。字符串等对象的相等判断要用equals方法。s1.equals(""yzk);
    4、当然运算符也是有优先级的,不用记住那么多,可读性高是重要的,写的让别人看的懂就可以
    5、当然也不要把==写成=;
    6、赋值运算本省也是一个值,这个值就是赋值之后的左边的值(int i=(a=b)+3)
短路运算:
[*]||:短路或。当第一个为true的时候,整个运算结果一定是true,就没有必要算第二个了。

int i=8;
boolean b=(i<10)||(i=i+5);
boolean b=(i>10)||(i=i+5);
System.out.println(b);
System.out.println(i);
   2、非运算(!)就是一个参与运算,没有短路的问题
三元运算符
[*]条件表达式?表达式1:表达式2
[*]如果“条件表达式”为true,则表达式的值为“表达式1”,否则为“表达式2”
[*]i%3==0?“能被3整除”:“不能被3整除”

6月3日12:17更新如下
...........................................................................................................................
IF语句
if(比较表达式)
{
   //一行或者多行语句
}
当“比较表达式”为true的时候执行{ }中的代码
易错点:
int i=10;
if(i=10)//这个地方不能出现等于号,=不属于比较式
{
   System.out.println("我是10");
}
if语句中的大括号需不需要写:
如果if语句大括号中只有一句话,这个是可以省略大括号,但是不建议这样做,因为容易出错。哪怕只有一句话,也要写大括号,坏的编程习惯并不会一定导致出错,但是增加出错的概率

else语句
if语句中还可以带else
if(比较表达式)
{
   //比较表达式为true时执行的代码块
}
else
{
   //比较表达式为false时执行的代码块
}
else if语句
if(条件表达式)
{

}
else if(条件表达式2)
{

}
else if(条件表达式3)
{

}
..............
else   //可以不用最后else,建议加上,更加严谨
{
   
}
if嵌套
[*]if...else...else if中都可以嵌套if....可以无限层级
[*]但是要尽量避免if语句嵌套层次过多


swith语句
switch(表达式)
{
   case 取值1:
    //语句;
    break;

   case 取值2;
    //语句;
    break;

   .....
   default:
   //语句;
    break;
}
使用switch case 实现“月份季节判断”
[*]表达式可以是byte,short,int,char类型,JDK5以后还可以是枚举类型,JDK7以后还可以是String类型。
[*]break意味着switch的结束,default相当于if的else,当所有case都不匹配的时候,执行default


switch其他问题:
[*]多个switch条件合并的问题:当多个case条件的代码一样的情况下,可以合并最后加一个break;
[*]当进行单个离散值判断的时候,switch可以用来替代if。switch能做的if都能做,反之不一定。

for循环
[*]循环结构有:for,while,do.....while三种语法

for(初始化表达式 ; 循环条件表达式 ; 循环后的操作表达式)
{
//循环体语句
}
最开始先执行“初始化表达式”,然后循环执行:先判断“循环条件表达式”,如果为true,则执行“循环体语句”,然后执行循环后的操作表达式;
while循环
while(条件表达式)
{
   循环体;
}
[*]每次循环前判断“条件表达式”,如果为true,则执行“循环体”,然后再进行下一次循环判断。
[*]用while实现打印五次“我爱Java”(逐语句执行分析)

int y =0;
while(y<5)
{
    System.out.println("我爱Java") ;
y++;
}
for和while在实现上可以互相代替,一般for用的频率比while高,在 io、JDBC中有用到while

dowhile循环
do
{
   执行语句
}
while(条件表达式);
先执行一次“执行语句”再判断“条件表达式”决定是否进入下次循环。
演示,使用do while实现打印五遍“我爱Java”
int x=0;
do
{
System.out.println("我爱Java");
x++;
}
while(x<5);
do...while和while的主要区别:do...while的执行语句至少执行一次,while的执行语句可能一次都不执行。do...while用的更少


数组
[*]int i=5;String s="tom";可以定义单个的数据,要储存多个数据怎么办呢?数组是储存多个数据的容器。
[*]类型[]数组名=new 类型[ 个数 ];
[*]比如int[ ]arr=new int[ 5 ] ;
[*]读写的方式:int x=arr[ 0 ] ; int y=arr[ 3 ]; arr=9 ;
[*]在读写的时候数组名后的[ ]叫序号,又叫下标,指的是对第一个元素进行操作,从0开始,所以最后一个元素序号是“个数-1”
[*]第二种定义方法,适合于定义时就确定元素个数和内容,用的比较少:int[ ] arr={ 3,5,6,9,11};

数组的遍历
for(int i=0;i<5;i++)
{
    System.out.println(arr);
}
可以通过arr.length获得数组的长度,改写如下,这样避免了5写死的问题(避免"魔法数")
for(int i=0;i<arr.length;i++)
{
   System.out.println(arr);
}
方法简介
[*]如果程序很多地方都要计算一个数组的最大值,难道每次都要写一堆代码吗?抽象出方法(Method)/函数(Function)

方法主要格式:
返回值类型方法名(参数类型参数1,参数2,....)
{
}
方法重载
[*]重载(OverLoad):在同一个类中,允许存在一个以上的同名方法,只要其参数个数或者参数类型不同即可,返回值是否一样无关
[*]编译器怎么知道应该调用哪个?


可变长度参数
[*]编写一个Sum方法,计算一个int数组的和

int sum(int[]nums)
每次调用都要sum(new int[ ]{5,3,9,10 })。改成:
int sum(int...nums)//JDK1.5后支持
就可以这样自由调用sum(3,5);sum(3,9,11,22,5);
这些参数其实还是以数组形式传递过去,在sum看来也是数组,只不过编译器会自动把参数包装为数组,简化了调动。
可变参数可以声明为各种类型:test1(String...values)
可变参数前面还可以有其他参数,只要保证可变参数是最后一个就可以:sum(String name,object...data)。为什么呢?你猜




1510988116 发表于 2017-5-31 21:57

yufan1123 发表于 2017-5-31 21:53
大神带我入门~~~
教程找了好多,但是感觉学起来好难啊~
就是不好懂~~看了容易忘记~~

我也是刚入门,自己领悟,做笔记,不要照葫芦画瓢

liuyuntianxia12 发表于 2017-7-25 15:21

比较支持楼主的认真心态,虽然知识很简单,但是要认真的看完做笔记,还是不容易的
推荐W3C,入门必备网站

jiaong 发表于 2017-5-31 20:06

看你笔记复习了一遍Java

kerwining 发表于 2017-5-31 20:25

也学习下JAVA

乔哥66 发表于 2017-5-31 20:33

非常感谢分享,么么哒。

范少爆 发表于 2017-5-31 20:38

6666666666666666666666666666666

放手一搏09 发表于 2017-5-31 20:40

可以的 ,加油

lijun9088 发表于 2017-5-31 21:07

新手表示看不懂,慢慢学习

花〆折断了寂 发表于 2017-5-31 21:08

谢谢分享

mmgglgy 发表于 2017-5-31 21:35

准备学java,谢谢拉

当合 发表于 2017-5-31 21:35

收藏了:lol ;楼主继续:victory:
页: [1] 2 3 4 5 6 7
查看完整版本: 想学Java的可以看看我做的笔记,很简单,后续继续更新笔记