`
Luob.
  • 浏览: 1589862 次
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
java的语言的基础组成
1.关键字:  被java赋予了特殊意义的单词
2.标识符:  类名  函数   26个字母  0-9   _ $ ,不能数字开头 不使用关键字
           包名: 全小写
           类名 接口名: XxxYxxZzzz 所有单词首字母大写
           变量和函数名:   xxxYyyZzzz: 第一个单词首字母小写,其余单词首字母大写
           常量名: XXX_YYY_ZZZ 所有字母都大写.多单词每个单词用"_" 连接

3.注释  :  单行, 多行, 文档 , 不能嵌套注释

4.常量和变量:

5.运算符
6.语句
7.函数
8.数组


常量
整数的表示方式
 十进制:0-9,
 八进制 0-7 用0 开头,
 十六进制:0-9 A-F 用0x开头,
 二进制 1 和0
             小数点
             布尔类型常量 
             字符常量  
             字符串常量
             null常量

    1.一个字节用 8个二进制位 表示  8个开关 表示 
    2.8进制是   3个二进制表示一位 (3个二进制的最大数是 7)
    3.16进制是  4个二进制表示一位 (4个二进制的最大数是 15) 
    4.8为的二进制的最大值 就是  255 ,可以想到 IP地址中 最大数就是 255,说明ip使用字节表示的 .  

   Interge.toBinaryString(-6);    \\java中将二进制 转换成 十进制的方法
   Interge.toBinaryString(6);








变量
变量:就是将不确定数据进行存储,也就在内存中开辟一个存储空间.
有明确的数据类型, 变量名, 数据 来完成


数据类型

数据类型:  基本数据类型  引用数据类型
 
基本数据类型 : 数值型     整数类型byte(8位二进制-128~127) short(16二进制32767) int(32位二进制65535) long(64位二进制)          浮点类型(float(32位进制),double (64二进制)

               字符型  char (0-32767)   16位 
               布尔型  boolean

引用数据类型 :  类     class   
                接口   interface
                数组   [] 



类型转换
1.自动类型提升,将两个不同类型数值运算 提升为同一种类型 然后再进行运算.
2.强制类型转换,有风险,可能会损失精度. 一般用于保留整数部分
3.float和int进行运算的时候 结果为 float 类型




运算符
1.算术运算符 : + - * /  %   ++  --  
2.赋值运算符
3.比较运算符
4.逻辑运算符
5.位运算符
6.三元运算符

代码1
//注意整型元算时候  小数点后面的都会舍弃
public static void main(String [] args){
   int x=4272;
   x=x/1000*1000;   //4270/1000=4.27-->int x=4  -->*1000--->int x=4000
   System.out.println(x);    //   4000  
}

取模
左边小于右边    结果 为左边
左边=右边       结果 为 0
右边为 1        结果 为 0 

出现 负数  只看 左边
1 % -5          结果 为  1
-1 % 5          结果 为 -1

public static void main(String[] args){
int a=3,b;
b=a++;   --->  b=3  a=4
b=++a;   --->  b=a=4
//  ++ 在前        先加
// ++ 在后        后加

System.out.println("5+5="+5+5);   // 5+5=55 (不是五十五) 是 五五
System.out.println("5+5="+(5+5));   // 5+5=10 
}

转义字符  \


转移字符:通过 \ 来转变后面字符或者符号的意义
\n: 换行
\b:退格 相当于 backspace
\r:按下回车键.window系统中回车符是由连个字符来表示\r\n  在linux DOS下面是使用 \r 表示
\t: 制表符.相当于tab键
System.out.println("hello \n world");

System.out.println("\"hello\"");
System.out.println("\\hello\\");


赋值运算符  
public static void main(String[] args) {
//   +=  -= *= /= %=  前面都是一个运算符 不是两个运算符
int x=3;
x+=4;  ==>  x=x+4;  

short s=4;
s=s+5;   // 先将 x自动类型提升 为 int 然后  =5 等于  9  然后 int 9  赋值给 short s  丢失精度 编译失败 ,需要强制类型转换

s+=5;   //编译通过  会自动完成强制类型转换 所以就通过了. 

int a,b,c;
a=b=c=5;  //编译通过

}


比较运算符 只可能是  true  和false
//   != > < >= <= == instanceof 

public static void main(String[] args) {
  System.out.println("hello" instanceof String);
}


逻辑运算符
&    and
|    or 
^   异或
!   not  非
&&  and (短路) 
||  or (短路)

public static void main(String[] args) {

//短路 案例
        int x=4;  
        System.out.println(x>4 && x++<5);
	System.out.println(x);     // 4
	System.out.println(x>4 & x++<5);
	System.out.println(x);     //5


/*  &  &&  和  |  ||
&  : 无论左边 是true 还是 false  右边都运算
&& : 当左边为false时, 右边不运算

|  : 两边都运算
|| : 左边为false 的时候 , 右边不运算
*/


/* & 与
true & true   =true;
true & false  = false
false & true  = false
false &  false =false
只要有一个false  结果就是false
两边都为 true 的时候  才为 true
*/

/*  |  或
true | true =true
true | false  =true
false | true =true
false | false =false

只要有个 true  结果为 true
都为 false 的时候就为 false
*/

/* ^ 异或
true ^ true =false
true ^ false =true
false ^ true =true
false ^ false= true
两边结果相同 为 false
两边结果不同 为  true
*/

/*  !
 !true =false;
!!true=true;
!!!true=true;
*/


}



位运算符号
// <<左移动  >>右移  >>>无符号右移  &与  |或   ^异或  ~反码

         3<<2   
 二进制  11
         1100  ==>  12
         
         6>>2    ==>  6/ 2*2=1
         110
         1  = 1

         6>>1=3  ==>  6/ 2=3

       3<<2 =12    3<<3=24
       3*2*2=12    3*2*2*2 =24  

  左移动    <<      就是 * 2的n位次幂    右边 补 0 
  右移动    >>      就是  / 2 的n位次幂  移动后 高位 补什么由原高位值定


  >>   移动后 高位 补什么由原高位值定
  >>>  不管 是负数还是正数  高位 都用 0 补 

// &: 与

6 & 3= 2

  110    0 是假  1 是真
& 011
-----
  010  ==>   假真假  ==>2

//  |: 或

6 | 5 =7

   110
|  101
-------
   111  ==>真真真  ==> 7






//异或 ^
// ^ 异或
6 ^ 5 ==  3

   110       0 假  1 真
^  101
-------
   011  ==> 假真真 ==> 3


异或: 一个数 异或一个数两次 结果还是 那个数.


// ~ 取反
//  ~ 反码 规律 N = -N-1
一个数取反 = 这个数的相反数 -1  

   ~6 =  -7

    0000...  0110
~   1111...  1001      -->取反      -7   
    0000.....0001      -->减1
    1111.....1000            
    0000.....0111     --> 取反     ==>7  

  -6 == 6的二进制取反 + 1 ==> 6的取反 =  -6 -1 =-7
  A  =  B  +  C           ==> B    =   A-C
  
  
  ~ 9 来试试  是不是 = -9 -1  =-10 

     0000 .... 1001
取反 1111 .....0110   A:一个负数不好算 就算他的正数取反数B  所以减一
-    0000 .... 0001
-------------------
     1111 .... 0101      B的取反   去掉反  ==> B
     0000 .....1010      B=10   ===>  A=-10 =10取反+1


问题1. 2 乘以  8 的最有效运算 就是  2<<3  =2*2(3)= 2*8=16  
问题2: 两个数的 互换 

public static void main(String [] args){   
int n=3,m=8;
方法一: 使用中间变量 temp  

方法二:   两个数比较大的时候 容易丢失精度
    n=n+m;
    m=n-m;
    n=n-m;


方法三: 技巧性方式没有丢失精度
   n=n^m;
   m=n^m;   // (n^m)^m = n
   n=n^m;   // (n^m)(n^m)^m = m
}


位移运算的巧用 求一个数的16进制位数

注意下使用  >>> 才对 不是  >>


流程控制语句
1.判断结构
2.选择结构
3.循环结构


if 和三元运算符 的比较
public static void main(String [] args0){

int a=3;
if(a>2)
   System.out.println("a");
if(a>3)
  System.out.println("b");

int x=2,b;

b=(x>3)? 100:200; 

b=(x>1)? System.out.println("a"):200;  这样就不行 


/*
if esle 的简写格式为: 变量= (条件表达式) ? 表达式1: 表达式2;

三元运算符:
  好处: 可以简化if else 代码
 qu  弊端:  因为是一个运算符,所以运算完后必须有一个结果.


*/

}



switch的使用
switch 在  5.0 的时候 增加了对枚举类型的判断
在  7.0 的时候增加了对字符串类型的判断
public static void main(String[] args){
  int x=3;

  switch(x){  //byte short int char
      default:  //default 总是最后执行的 ,如果 default没有break 下面都不会判断
           System.out.println("d");           // 4 
      case 2:
           System.out.println("a");   // 1 判断        5 不判断
      case 4:
           System.out.println("b");  // 2 判断        6  不判断 -->  跳出 
           break;
      case 6:
           System.out.println("c");  // 3 判断
           break;

    //结果  d  a  b   
 
  }

  switch(x){
       case 3:
       case 4:
       case 5:
              System.out.println("春季");
       case 6:
       case 7:
       case 8:
              System.out.println("夏季");
       case 9:
       case 10
       case 11:
              System.out.println("秋季");
       case 12:
       case 1:
       case 2:
              System.out.println("冬季");
       default:
            System.out.println("you are so best!"); 

  }

/*
 if 和switch 很像

 具体什么场景下,应用那个语句呢?
 如果判断的具体数值不多,而是符合  byte short int char 这四种类型 
 虽然 两个语句都可以使用, 建议使用switch 语句  ,因为 效率稍高 
  
 其他情况,对区间判断,对结果为 boolean 类型判断 ,使用 if ,if使用范围更广

*/

}


  • 大小: 38.4 KB
  • 大小: 51.9 KB
  • 大小: 13 KB
  • 大小: 72.4 KB
  • 大小: 76.8 KB
分享到:
评论

相关推荐

    Java2 编程21天自学通

    《Java2 编程21天自学通》是一本针对初学者设计的Java编程教程,旨在帮助读者在21天内快速掌握Java2的核心概念和技术。这个教程可能包含多个章节,涵盖从基础语法到高级特性的全面讲解。下面将详细阐述Java2编程中的...

    JAVA入门教程21天学通JAVA2第三版

    ### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...

    java2 21天自学通(pdf)

    java2 21天自学通 中文版 pdf

    21天学通JAVA2

    21天学通JAVA2(第三版

    Java入门30天

    2. 动态性和安全性:Java支持动态编译和运行,增强了软件的灵活性和安全性。它的内存管理和异常处理机制为开发者提供了更安全的编程环境。 3. 网络应用:Java在网络应用上的潜力得到了充分展现,如Java Applets和...

    Java 2编程21天学自学通

    Java 2编程21天学自学通是一本旨在引导初学者在21天内掌握Java编程基础的自学教材。本书涵盖了从入门到进阶的全方位Java知识,旨在帮助读者建立起坚实的编程基础,以便进一步深入Java世界。以下是根据书名和描述所...

    韩顺平30天学java

    2. **基本语法**:学习Java的基础语法,包括数据类型(如整型、浮点型、字符型和布尔型)、变量、常量、运算符、流程控制(如if条件语句、for和while循环)、以及方法的定义和调用。 3. **类与对象**:Java是面向...

    java100天速成

    Java编程语言以其强大的功能、跨平台的特性以及丰富的开源库,成为了全球软件开发者的首选工具之一。对于初学者来说,掌握Java技术可以打开许多职业发展机会。"Java100天速成"是一个专为新手设计的学习计划,旨在...

    java 2 编程21天自学通.rar

    《Java 2 编程21天自学通》是一本旨在帮助初学者在短时间内掌握Java编程语言的教程。"pdg"标签可能指的是该压缩包包含的文件格式,这种格式通常用于电子书或文档,而这里可能是教程的章节或者部分内容。尽管具体的...

    java视频教程_黑马Java零基础辅导班[第一期]第2天课件源码

    【标题】"java视频教程_黑马Java零基础辅导班[第一期]第2天课件源码" 提供的是一个针对初学者的Java编程教学资源,由知名教育机构"黑马"提供,旨在帮助完全没有Java背景的学员快速入门。课程内容可能是以视频的形式...

    JAVA12天全掌握

    这不仅是一场快速学习的挑战,也是一个深度理解Java编程基础的全面之旅。通过本课程,学员将从零开始,逐步建立起扎实的Java编程基础,为未来在软件开发领域的发展打下坚实的基础。 第一天:Java简介与环境配置 1. ...

    Java基础学习第二天

    Java的发展历程部分提到了Java之父:詹姆斯高斯林(James Gosling)。他开发的Java语言因为其“一次编写,到处运行”的特性,极大地推动了编程语言的发展。JDK(Java Development Kit)的发展历史也成为了Java学习者...

    21天学好JAVA

    2. **JAVA语法基础**:了解JAVA的基础语法,包括数据类型(如整型、浮点型、字符型、布尔型)、变量、常量、运算符、流程控制语句(如if、for、while、switch)以及数组的使用。 3. **面向对象编程**:理解类、对象...

    老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!

    本文将深入探讨一位经验丰富的Java程序员如何利用Swing库在两天内开发出一款连连看游戏,并分享其背后的技术细节。 连连看,这个深受各年龄层喜爱的小游戏,其实现原理并不复杂,主要涉及图形界面设计、事件处理和...

    JAVA 天地图矢量、影像瓦片下载+图片叠加融合

    在本项目中,我们主要探讨的是如何利用Java技术来实现对天地图的矢量和影像瓦片的下载、叠加以及图片融合功能。这个基于SpringBoot和Maven的项目提供了便捷的方式来处理这些地理空间数据。 首先,我们要理解"天地图...

    21天学通Java Web开发.pdf

    第五篇为框架技术篇,介绍了Struts 2、Hibernate、Spring这三个目前非常流行的轻量级Java Web开发框架。第六篇为项目实战篇,通过整合前面的三个框架,开发一套用户管理系统。 《21天学通Java Web开发》适合Java Web...

    Java入门教程[9天快速入门JAVA]

    ### Java入门教程:9天快速入门JAVA #### 第一章:Java概述 ##### §1.1 Java语言出现的背景、影响及应用前景 **一、背景** Java 的诞生源自 SUN MicroSystems 公司的一项名为 Oak 的项目。1991 年,该项目由 ...

    Java学习100天速成课件

    Java学习100天速成课件是一份全面的教程,旨在帮助初学者或有一定基础的开发者在短时间内深入理解Java SE(标准版)的核心概念和技术。这份课件涵盖了多个关键领域,包括线程(Thread)、输入输出(IO)、套接字...

    java提示几天前

    } else if (second &gt;= 60 * 60 * 24 * 2 && second * 60 * 24 * 7) {//大于2D小时 小于 7天 long day = ((second / 60) / 60) / 24; interval = day + "天前"; } else if ( second * 60 * 24 * 365 && ...

Global site tag (gtag.js) - Google Analytics