您的位置:首页 > 编程语言 > Java开发

Java学习笔记

2016-06-19 21:06 295 查看
**1.**Scanner in =new Scanner(System.in);

2.级联语句if-else-if语句else要对齐。

eg: int f;
if(x<0){
f=-1;
}else if(x==0){
f=0;
}else{
f=2*x;
}
System.out.println(f);


**3.**Math.random() 这个函数可以提供[0,1)之间的一个随机浮点数值。

4.循环的选择:

如果明确了循环次数,就用for循环

如果必须执行一次,用do-while 循环

其他情况用while循环

**5.**break 跳出循环

continue 跳过循环这一轮剩下的语句,进入下一轮

6. 定义数组变量:<类型>[]<名字>= new<类型>[元素个数];

int[] grades = new int[100]; [b]*********************[/b]

元素个数必须是整数

元素个数必须给出

元素个数可以是变量

new创建的数组会得到默认的零值

**7.**for-each 循环

for(<类型><变量>:<数组>)

{

}

对于数组当中的每一个元素,把每个元素取出来,作为这个类型的一个变量; 适用于数组的遍历。

package 循环;

import java.util.Scanner;

public class win {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int [] a = {1,2,3,4,5,6};
int [] b = {8,7,8,9,8,7};
int x;
boolean s =false;
for(int i=0;i<a.length;i++)
{
x=b[i];

for(int k :a)
{
if(k==x)
{
s=true;
}
}
}
System.out.println(s);

}
}


**8.**Math.sqrt(x) 计算x的平方根

9.字符串
String s = new String("a string");


创建了一个String的对象
用“a string”初始化这个对象
创建管理这个对象的变量s
让s来管理这个对象


用加号(+)可以连接两个字符串

“hello”+”world”–>”helloworld”

当这个加号(+)的一边是字符串而另一边不是时,会将另一边表达为字符串然后再做连接; “age”+1+2–>”age12” 1+2+”age”–>”age12”

10. in.next();读入一个单词,单词的标志是空格

空格包括空格、tab和换行

in.nextLine();读入一整行

11. 比较字符串内容是否相等,用 .equals

示例: String s ;
s = in.next();
System.out.println(s);
System.out.println(s.equals("bye"));


12.比较字符串大小,用 .compareTo

示例:   String s1 = "abce" ;
String s2 = "abcd" ;
System.out.println(s1.compareTo(s2));


13.获取字符串长度,用length()函数

示例:String s;
s.length();      //s.length=3


14.访问String里的字符,用s.charAt(index)

返回在index上的单个字符
index的范围是0到length()-1
第一个字符的index是0
不能用for-each循环来遍历字符串


15.输出子串,用 .substring()

示例:String s1 = "0123456789汉字"
System.out.println(s1.substring(2));  //表示输出从第二个位置起到最后一个位置的字符,所以这里会输出23456789
System.out.println(s1.substring(i,j); //表示输出从第i个位置到j-1个位置的字符


16.寻找字符

s.indexOf(c)      得到字符c所在的位置,-1表示不存在。
s.indexOf(c,n)    从n号位置开始寻找c字符
s.indexOf(t)      找到字符串t所在的位置
从右边开始找
s.lastIndexOf(c)
s.lastIndexOf(c,n)
s.lastIndexOf(t)


17.不可变的String

所有的字符串都是不可变的,对它们的操作的结果都是制造新的字符串出来
适用的String操作:   s.trim    删掉字符串两端的空格
s.replace(c1,c2)  把这个字符串中所有的c1换成c2
s.toLowerCase()  把字符串中所有的字符变成小写
s.toUpperCase()    把字符串中所有的字符变成大写
错误示例:  String s ="abc";
System.out.println(s.toUpperCase());
正确示例:  String s1 ="abc";
String s2 =s1.toUpperCase();
System.out.println(s2);


18. s.startsWith(t)

s.endsWith(t)    帮你看出该字符串是不是以另外一个字符串开头(结尾)的


19.在switch-case中使用字符串

switch(s){
case"this"......break;
case"that"......break;
}


**20.**Math

abs     计算绝对值
pow     计算幂次(做浮点类型的计算)
random  给一个随机数
round   做四舍五入
示例:    System.out.println(Math.abs(-13));    //求绝对值
System.out.println(Math.pow(2, 3.2));   //求2的3.2次方
System.out.println(Math.round(3.1415926)); //对小数部分四舍五入
System.out.println(Math.random());   //给一个0到1之间的随机数


21.函数

函数定义:
public static void sum(int a, int b)
{
int i;                        //
int sum=0;                    //
for(i=a;i<=b;i++)             //
{                             //  函数体
sum+=i;                      //
}                         //
}                                 //
System.out.println(a+"到"+b+"的和是"+sum)
//public static 是函数头,void是返回类型, //sum是函数名,int a,int b;是参数表


22.函数传值

Java语言在调用函数时,永远只能传值给函数

eg:`package 数组;

import java.util.Scanner;

public class ssssss {
public static void swap(int a, int b){
int t;
t = a;
a = b;
b = t;
System.out.println("转换后a="+a+";b="+b);
}
public static void main(String[] args) {
int a = 5;
int b = 6;
swap(a,b);
System.out.println("a="+a+";b="+b+";");
}
}`


23.修改编码格式

注意,代码中的汉字用的是UTF-8编码。请在Eclipse里将文件的编码格式改为UTF-8:

File –> Properties –> Resource (Text file encoding) ==> Other [UTF-8]

24.我建议你在看视频时,旁边放一张白纸,随时记下要点及你脑海中突然出现的火花。

如果可能的话,我建议你使用双屏幕,一边播放视频,随时暂停,另一边直接在Visual Studio、Eclipse或Android Studio中运行示例源码,观察程序运行过程。

看完视频之后,对照着你的笔记,重温一下学到的知识。把讲课实例重新运行一遍,读懂里面的代码,但这还不够。

你需要动手!

你不仅需要读懂示例代码,还应该尝试着动手修改代码,分析输出结果,从而深入理解知识。

接着,你需要学以致用,把学到的知识应用于类似的场景,解决类似的问题,这主要是通过完成布置的编程作业和练习完成的。

第三步,你需要学会知识迁移和组合创建,把多个知识组合起来,在新的场景中解决新问题,这主要是通过你主动进行的大大小小的开发实践完成的,这门课的结课设计,要求你完成一个完整的Windows桌面或Android应用,就能帮助你完成这一任务。

**25.**serialVersionUID 用来表明类的不同版本间的兼容性

简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。

如果我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体能够兼容先前版本,未作更改的类,就需要显式地定义一个名为serialVersionUID,类型为long的变量,不修改这个变量值的序列化实体都可以相互进行串行化和反串行化。

26. notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。

void notify(): 唤醒一个正在等待该对象的线程。

void notifyAll(): 唤醒所有正在等待该对象的线程。

两者的最大区别在于:

notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。

notify他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,当第一个线程运行完毕以后释放对象上的锁,此时如果该对象没有再次使用notify语句,即便该对象已经空闲,其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,直到这个对象发出一个notify或notifyAll,它们等待的是被notify或notifyAll,而不是锁。

——————————–未完————————————-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: