java基础总结day1

---------------------- android培训java培训、期待与您交流! ----------------------

学习java有一段时间了,但之前一直没总结,学到后面忘前面的,现在开始每天一些总结,强化记忆,便于复习

 

一:什么是JRE,JDK?
1.JRE(Java Runtime Environment Java运行环境)
  包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等
  如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
 2.JDK(Java Development Kit Java 开发工具包)
   JDK 是提供给Java开发人员使用的,其中包含了Java的开发工具,也包含了JRE。所以安装了JDK,就不用再单独安装JRE了
 其中的开发工具:编译工具(javac.exe)运行(java.exe)打包工具(jar.exe)等

 总结:JDK包含JRE ,JRE又包含JVM 即JDK(JRE(JVM))。

二:环境变量Path和classpath的作用?
   简单说:path是OS用的,classpath是java用的
1:path:path是系统用来指定可执行文件的完整路径,即使不在Path中设置jdk的路径也可以执行java文件,但
必须把完整的路径写出来,如C:\Program Files\Java\jdk1.6.0_10\bin\javac TheClass.java。path使用来搜索
执行的可执行文件的路径的,如果可执行文件不在当前目录下,那就会依次搜索path中设置的路径,而java中的各种
操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用再把java文件的完整路径写出来
了,它会自动去path中设置的路径去找相应的命令。

2.classpath的作用:classpath是java执行时所需要的环境变量,java命令根据classpath所指定的路径找到所需要的类(.class)
文件。
就是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.JTable这句话是告诉编译器
要引入javax.swing这个包下的JTable类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径)
;如果你想要在编译当前目录下找,就加上“.”,如:.;c:\Program Files\java\jdk\这样编译器就会到当前目录和c:\Program Files\java\jdk
去找javax.swing.JTable这个类;
注意:java5.0以后,如果没有设置classpath环境变量,java解释器将会在当前路径下搜索java类,但如果设置了classpath环境变量,一定不要忘记
在classpath 环境变量中增加“.”,强制java解释器在当前路径下搜索java类。还有大多数人都是用Eclipse写程序,不设置classpath也没关系,因为
Eclipse有相关的配置。


环境变量设置:
系统变量:
JAVA_HOME:c:\Program Files\java\
path:%JAVA_HOME%\bin;
classpath:.;%JAVA_HOME%\lib;d:\daima\0619\class
注意:classpath 路径前面一定要加“.”代表现在当前路径下查找,如果没有再到classpath变量中的路径查找
      classpath 路径中尽量不要使用汉字或空格,容易出错,且环境变量最后不要加“;”结束
也可以直接在dos控制台中修改设置,,且只对当前控制台有效,如需重复,可以输入start在开启一个相同设置的dos控制台

查看path和classpath环境变量
set path
set classpath
清空path和classpath环境变量
set path=
set classpath=
修改path和classpath
set path=haha;%path%
set path=%path%;hehe
start //新开启一个保存当前设置的dos控制台
set classpath=%classpath%;hehe //这里只能加到后面,应为classpath变量的第一个路径必须是“.”
当然也可以不设置,默认就为当前路径,一旦修改了classpath 必须设置第一个路径是“.”


三:java中标识符的命名规范:
1.包名:多个单词组成的字母都小写,如xxxyyyzzz
2.类和接口名:多个单词组成时,所有单词的首字母都大写,如XxxYyyZzz
3.变量名和函数名:多个单词组成时,第一个单词的首字母小写,第二个单词开始每个单词的首字母大写
  如xxxYyyZzz
4.常量名:所有字母都大写,多个单词时每个单词之间用“_”连接,如XXX_YYY_ZZZ

四:Java基本数据类型有哪些?
1.整数类型:
     byte  1个字节 8位   8*1
     short 2个字节 16位  8*2
     int  4个字节 32位  8*3
     long  8个字节 64位  8*4

2.字符类型:
           char  2个字节  16位

3.浮点类型:
     float 4个字节  32位
     double 8个字节  64位
4.布尔类型:
     boolean 1位

Java中的基本类型只有这八种,分为两类:数值类型和boolean类型,字符串不是基本类型数据,
字符串类型是一个类,也就是一个引用数据类型。
整数类型默认是int类型,小数类型默认是double类型


五:Java中的基本数据类型转换?
1.自动类型转换:
  遵循以下规则:
         char--->
                                int-->long-->float-->double
  byte-->short-->

  例:
 String str=5;// 编译失败,因为5是一个整数,基本类型,不能直接赋给一个字符串,Java是强类型,必须先定义后使用
  byte b=5;  //赋值之前会先进行判断如果常量“5”在byte范围内,赋值成功,在内存中占8位,如果超出范围,损失精度,编译失败
       b=b+3;  //这里byte类型和一个int类型的进行运算,b会自动提升成int类型,运算完成后占32位,在赋给byte类型的b,超出范围,损失精度,故编译失败
    b+=3  //编译成功,底层有自动转换机制,相当于b=(byte)(b+3),最后赋给b的还是byte类型
 float f=5; //结果会输出5.0,int类型中提升成了float类型
 float f=5.0; //容易损失精度,编译失败,5.0默认是double类型,不能直接赋给float类型,要加f或F,float f=5.0f;  
 char c='a'+1;  //输出结果为b,相当于c=(char)('a'+1);与1运算自动提升成int类型98,最后在强转成char类型输出
      c=c+0;  //损失精度,编译失败,无法将一个运算结果为int类型的值赋给一个char类型的变量

 任何基本类型的值和字符串值进行连接运算时,基本类型都将自动转换成字符串类型如果希望基本类型转换成对应的字符串时,可一个把基本类型值和一个空字符串进行连接
  例:
     String str=3.5f+"";  //输出结果为3.5为字符串类型
  String str1=3+4.5+"Hello";  //输出结果为7.5Hello,先执行3+4的加法运算,从左到右
  String str2="Hello"+3+4.5; //结果为Hello34.5,先执行Hello+3的运算,得到一个Hello3的字符串
  String str2="Hello"+(3+4.5); //结果为Hello7.5,()优先级高,先运算
  String str3=true+"Hello"+false; //结果为trueHellofalse
  String str3=true+false+"Hello"; //编译失败,boolean类型不能进行算术运算


2:强制类型转换
 
   强制类型转换的运算符是“()”,即 (targetType目标类型)value
   强制类型转换类似于吧一个大瓶子里的水倒入一个小瓶子,如果大瓶子里的水不多还好,如果大瓶子里的水很多,将会引起溢出,造成数据丢失

   int iValue=233;
   byte bValue=(byte)iValue;  //结果输出为-23
   double dValue=3.98;
   int tol=(int)dValue; //输出结果为3;
 


六:网页上临时生成的验证字符串?

思路:先随机生成一个指定范围内的int类型数字(如果希望生成小写字母,就在97~122之间),然后在将
      其强制转换成char类型,在将多次生成的字符连缀起来即可
 public class RandomStr
 {
  public static void main(String[] args)
  {
   String result="";
   for (int i=0;i<4; i++)
   {
    int iValue=(int)(Math.random()*26+'A'); //生成一个0~26的伪随机数,包括0,不包括26
    result=result+(char)iValue;
   }
   System.out.println(result);
  
  }
 
 
 }

七:最有效率的计算出2*8等于几?
    2<<3
 左移n位就相当于乘以2的n次方,右移n位则是除以2的n次方。需要注意的是左移时,左边舍弃的位中的数字通常是无效的,但右移时右边舍弃
 的位常常是有效的,移位运算不会改变操作数本身,只是得到了一个新的运算结果。

 必须指出的是,>>,>>>,<<<移位运算符并不适合所有的数值类型,他们只适合对byte、short、char、int、long等整数类型进行运算

 对于int类型的整数移位 a>>b,当b>32时,系统会先用b对32求余数(因为int类型只有32位),得到的结果才是真正移位的位数,例如a>>33和a>>1
 的结果完全一样,而a>>32的结果和a相同

 对于long类型的整数移位a>>b,当b>64时,总是先用b对64取余(因为long类型是64位),得到结果才是真正移位的位数。

八:对两个整数类型的变量进行互换,不需要第三方变量?
 int a=3,b=5; 
  a=a+b;  //如果a和b足够大,结果超出了int范围,容易损失精度,不推荐
  b=a-b; //(a+b)-b
  a=a-b; //(a+b)-a
 System.out.println("a="+a+",b="+b);
 
 //技巧型
 int a=3,b=5;
  a=a^b;
  b=a^b; //a^b^b
  a=a^b; //a^b^a
 System.out.println("a="+a+",b="+b);

 //开发常用定义第三方变量
 int temp=a;
  a=b;
  b=temp;
 System.out.println("a="+a+",b="+b);

 

结合java视频和书中内容,写的总结,便于复习基础知识。

 

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值