01 Java语法

一、Java语法

1.基础常识

1)常识

(1)软件开发:

  1. 软件:数据+指令
  2. 常见:
    1. 系统软件
    2. 应用软件
  3. 开发:制作

(2)人机交互:

  1. 图形化界面
  2. 命令行方式

(3)dos命令行常见命令:

dir,md,rd,cd,cd..,cd/,del,exit,echo,*.txt,> .当前目录 ..上级目录

(4)计算机语言:C、C++、Java……

2)Java语言概述

SUN公司在1995年推出
1. Java EE
2. Java SE
3. Java ME

特点
1. 跨平台(JVM)
2. 完全面向对象
3. 安全可靠

3)环境搭建

(1)JDK开发,JRE运行

在甲骨文官网 下载、安装JDK
JDK:

开发工具:java、javac、jar

JRE:

系统类库、JVM

修改建立环境变量:

JAVA_HOME 即安装目录
PATH %JAVA_HOME%\jre\bin;%JAVA_HOME%\bin;

命令行临时配置用:

set path=C:…
set path=path;%path%\bin;
start 开新窗口

(2)classpath

临时 set classpath=D:\java\day01
set classpath=.;C:\;D:\

4)入门

(1)Hello World

javac Demo.java
java Demo

class Demo
{
     public static void main(String[] args)
     {
          System.out.println("Hello World !");
     }
}

(2)Hello World 组成成分

class:关键字,定义类,区分大小写(必须小写
Demo:类名,每个单词首字母建议大写

public static void main(String[] args)

注意文件后缀名

2.Java语言基础组成

综述

关键字、标识符、注释、常量、变量、运算符、语句、函数、数组

1)关键字

01 Java语法_第1张图片

01 Java语法_第2张图片

2)标识符

  1. 数字不能开头
  2. 不能用关键字
  3. 可包含:数字、英文字母、_$

包名: 都小写 xxxyyyzzz
类名、接口名: 所有单词首字母大写 XxxYyyZzz
变量名、函数名: 第一个单词小写,其余首字母大写 xxxYyyZzz
常量: 所有字母大写,且用_连接 XXX_YYY_ZZZ

3)注释

// 单行注释


\*
多行注释
*/


/** 文档注释: */

4)常量

01 Java语法_第3张图片

5)变量

通过明确数据类型和标识符实现。
int x = 4;
byte b = 2; //-128~127
short s = 30000;
long l = 4L;
float f = 2.3F;
double d = 34.56;
char ch = '4';
char ch1 = 'a';
char ch2 = '+';
char ch3 = ' ';

boolean bo = true;
boolean bo1 = false;
//当数据不确定,需要存储时就定义变量。

6)运算符

(1)一般运算符

i++: ++在最后运行
++i: ++最先运行
“Hello” + “lo”:字符串连接符
System.out.println(“a=”+a+“,”+“b=”+b);

01 Java语法_第4张图片

(2)转义字符

\n: 换行 \b: 退格
\r : 回车 \t: 制表符(Tab)

Linux:换行:\n
windows:换行:\r\n
dos:换行:\n
\”:双引号
\:反斜杠\
char c = '你';

(3)赋值运算符和比较运算符

+= -= *= \= %=
x+=4;//一次运算,自动强转
x=x+4;//两次运算,会自动转换,不会强转

== != > >= < <= instanceof

(4)逻辑运算符

&与 |或 ^异或 !非 ~按位取反
&& 短路 与 || 短路 或

(5)位运算符

<< >> >>>
左移,相当于乘2^n 右移,相当于除2^n 最高位补1或0(看原来正负) 不论正负,最高位补0

一个数异或同一个数两次还是原来的数。可用于加密,解密。

(6)位运算符(练习)

//1. 高效2乘8
0000 0000 0000 0010 <<3 =0000 0000 0001 00002<<3
//2. 对两整数变量值互换(不用第三方变量)

//用第三方temp(开发用这种)
//不用第三方
int n=3,m=8;
n=n+m;
m=n-m;
n=n-m;//局限性,int型溢出可能
第二种不用第三方方法
n=n^m;
m=n^m;
n=n^m;

(7)三元运算符

(条件表达式)?表达式1:表达式2;
n>9?(char)(n-10):n;

(8)类型转换

自动类型提升
强制类型转换 b = (byte)(b+2);

(9)进制特点

Integer.toBinaryString(-6);

7)语句

(1)语句(if)

if(     )//可判断大区间,用if范围更广,
{

}
else if(     )
{


}
else
{


}

break( 跳出)
continue( 继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。

(2)语句(switch)

//用于数值少时, 不可判断 enum,boolean,float,double
// 只判断byte,short,int,char,甚至String(JDK7之后)
switch (表达式)
{
     case1:
          执行语句1;
          break; 
     case2:
          执行语句2;
          break;
     default:
          break;
}

(3)语句(while)

while (条件)
{
     执行语句;
}
//
do {
     执行语句;
     } while (循环条件)

(4)语句(for)

forint i=0 ; i < 3;i++)
{
     执行语句;
}
//变量作用域问题,不同于while,比较优秀

(5)循环语句其他特点

for (。。。;条件表达式;。。。)
while ( true )
for (;;;)//死循环

//累加思想,计数器

(6)for嵌套

forint x=0; x<5; x++)
{
      for (int y = 0; y<5-x; y++)
     {
          System.out.print(y);
     }
     System.out.println(" ");
}

(7)break;continue;

w :。。。。。。
。。。。。
break w ;

8)函数

(1)函数基本样式

public static void function()
{
}

(2)函数重载

只和函数 参数列表 有关

**类型
个数**
与返回值类型无关

(3)内存结构

01 Java语法_第5张图片

9)数组

(1)数组静态初始化

int[] arr = new int[]{3,1,2,4};
或者 int[] arr1 = {3,1,2,4};
int[] arr2 = new int[2];
arr2[0] = 50;
arr2[1] = 20;

(2)遍历

for(int x=0;x<3;x++)
//或者
for(int x=0;x<arr.length;x++)

(3)获取最值

利用角标,记录临时值, 遍历 比较数组

(4)选择排序

一个元素和其他所有 未排序 元素比。
一般排序是 升序 排序。

     public static void selectSort(int[] arr)
     {
          //对数组进行遍历
          for(int x=0; x<arr.length-1; x++)
               for(int y=x+1; y<arr.length;y++)
               {
                    //符合条件,交换元素
                    if(arr[x]>arr[y])
                    {
                         int temp = arr[x];
                         arr[x] = arr[y];
                         arr[y] = temp;
                    }
               }
     }

(5)冒泡排序

相邻 未排序 元素相比较。
//最原始的冒泡排序,可以进行优化
//优化方向有减少比较次数,减少数据写入(交换,操作堆内存)

     public static void bubbleSort(int[] arr)
     {
          //遍历数组
          for(int x=0; x<arr.length-1; x++)
          {
               //-x:让每一次比较的元素减少
               //一轮过后,最大数在最后面
               for(int y=0; y<arr.length-1-x; y++)
               {    
                    if(arr[y]>arr[y+1])
                    {
                         int temp = arr[y];
                         arr[y] = arr[y+1];
                         arr[y+1] = temp;      
                    }
               }
          }
     }

开发中要用 Arrays.sort(arr);

(6)进制转换

//利用查表法

        //十进制(其实是二进制)转n进制
public static void  trans( int  num, int  base, int  offset){
                if (num ==  0 )
                {
                        System .out.println( 0 );
                        return ;
                }
                char [] table ={'0','1','2','3','4','5','6','7','8','9',
                'A','B','C','D','E','F' };

                //临时容器
                char [] arr =  new char [ 32 ];
                int  pos = arr.length;
                while (num != 0 )
                {
                        int  temp = num & base;  //取低位
                        arr[--pos] = table[temp];  //查表
                        num>>>=offset;  //右移
                }
                System .out.print( "0X" );
                for ( int  x = pos; x<arr.length; x++)
                {
                        System .out.print(arr[x]);
                }
        }

(7)二维数组

//二维数组其实是由多个一维数组组成。

你可能感兴趣的:(01 Java语法)