2014—4—17——JAVA

来源:互联网 发布:移动50m宽带看网络电视 编辑:程序博客网 时间:2024/06/15 22:34

看了会马士兵的视频和一些网上东东

都是基础拉,没压力

 

标示符命名规则

1,不能关键字重名

2,必须字母,下划线,美元$开头,数字组成

3,第一位当然不能是数字喽

4,大小写注意

见名知意,驼峰命名啊,不用太多说了

 

JAVA中的注释

分块/**内容*/

多行/*内容*/

单行//内容。。。当然在常州老板不给我用这种注释方法

 

下面就是写个输入,练练手

public class ScanTest

{

  public static void main(String[] args)

  {Scanner sc=new Scanner(System.in);
   System.out.println("输入一个数字先");
   int num=sc.nextInt();
   System.out.println("输入一串字符");
   String result=sc.next();
   System.out.println("输入的INT是"+num+"\n输入的字符串是"+result);
  }
}


sc对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:

next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()

上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入

12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文

本行并且回车,该方法得到一个String类型的数据。

 


 

 关系运算符 <,>,<=,>=,!=,==

数据类型 大小 范围 默认值

byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 -2147483648-2147483648 0
long(长整型) 64 -9233372036854477808-9233372036854477808 0
float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
boolean(布尔型) 1 true/false false

 

这是一个曾和同学争红脸后做实验的问题- -#

 

!!!string是一个引用类型- -#

复制粘贴百度了,哈,不过还得看一边阿,以后有空拿它做做试验

但为了应付工作很多东西不易太钻深了,这是我曾的通病。。企业毕竟不会为你某一项做的多深那个哈

 

http://baike.baidu.com/link?url=L5rvJ4_8vI9ZdV1i5A_AkHZ3wVZckU5lJhoiLuUnp6gFOAPhMnt0VjrwmZgWmYA4jbnm_d3n68USAqtYaOr9zq

String就是C++、java等编程语言中的字符串,用双引号引起来的几个字符.如"Abc","一天".

特别注意

String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似.
?
1
2
3
4
Strings1,s2;
s1="abc";
s2=s1;
s2="def";
//这样操作之后s1是"abc",s2是"def".
?
1
2
3
4
5
6
stringa="hello,word!";
stringb="hello,word!";
stringc="hello!";
stringa="hello,word!";
stringb="hello,word!";
stringc="hello!";
a 和 b 是不是指向同一个地址呢,这个问题在各论坛都是谈论很激烈,其实很简单,跟下这些字符串的内存地址就好了
?
1
stringa="hello,word!";
?
1
2
00000042moveax,dwordptrds:[02A62208h]
00000048movdwordptr[ebp-44h],eax
?
1
stringb="hello,word!";
?
1
2
0000004bmoveax,dwordptrds:[02A62208h]
00000051movdwordptr[ebp-48h],eax
?
1
stringc="hello!";
?
1
2
00000054moveax,dwordptrds:[02A756F8h]
0000005amovdwordptr[ebp-4Ch],eax
a的地址指向02A62208h,b的地址也是02A62208h,这说明了什么,创建b的时候.net机制肯定是先去查找内存中是否有这个字符串的内存地址,如果有则指向,没有才创建[1]

 

String是不可变

首先在栈中有个"s"变量指向堆中的"wo"对象...
栈中"s1"变量指向堆中的"de"对象
当执行到s = s + s1;
系统重新在堆中new一个更大的数组出来,然后将"wo"和"de"都复制进去,然后栈中的"s"指向这个新new出来的数组...
所谓的不可变是指:它没有在原数组“wo”上进行修改,而是新建了个更大数组进行扩展,也就是说,这时候堆里还是有“wo”这个对象数组存在的,只不过这个时候"s"变量不在指向"wo"这个数组了,而是指向了新new出来的数组,这就是和StringBuffered的区别,后者是在原数组上进行修改,改变了原数组的值,StringBuffered不是通过新new一个数组去复制,而是在原数组基础上进行扩展...再让变量指向原数组....

0 0
原创粉丝点击