Java基本语法

Java基础知识


1.idea中一个项目中可以包含多个module


2.建类需要先建包 包的名字是公司域名的反向


例:

net.suncaper

3.建立测试类 按ctrl+shift+T alt+Enter下载需要的东西


在测试类中的方法之前加上@Test注解


4.在测试类中可以添加@Before注解 使被标记的方法在所有测试方法在测试之前运行


5.在测试类中可以添加@After注解 使被标记的方法在所有测试方法在测试之后运行


Java基础知识

1.Java中的注释类型:
单行注释: //
多行注释: /xxx/
文档注释(java 特有): /** xxx*/在开始的 /** 之后,第一行或几行是关于类、变量和方法的主要描述。之后,你可以包含一个或多个何种各样的 @ 标签。每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).
如:

基础类
* @author xx
* @version v1.2 
*/

注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

文档注释:
例:

/**
*注释实例
*@author yys
*@date 2019.9.6
*/

例:

/**
*注释实例
*@param a 整数a
*@param b 整数b
@return a与b中的最大值
*@author yys
*@date 2019.9.6
*/

文档注释->Tools generateJavaDoc
可以用这个工具 将自己的文档注释生成网页 在二次开发等都有一定的依赖
在Other。。。的那一栏写参数: -encoding UTF-8 -charset UTF-8 不然会因为字符编码报错


2.Java变量
Java中的变量和方法命名的基本规范:

变量和方法名首字母小写,驼峰式
类名首字母大写,驼峰式
常量全大写,划线式
例子:

public class TestJavaBasic{
    public static final String STUDENT_NUMBER = "2345";
    public void getMax(){
    int myAge = 0;
    //int my_age = 0; 不要使用这种划线式 要使用驼峰式 
    //当一门语言如果不支持大小写的情况下,比如VB
}
}

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符,凡是自己可以起名字的地方都叫标识符。

定义合法标识符规则

由26个英文字母大小写,数字:0-9 ,_或 $ 组成

数字不可以开头。

不可以使用关键字和保留字,但能包含关键字和保留字。

Java中严格区分大小写,长度无限制。

标识符不能包含空格。

注意:在起名字的时,为了提高阅读性,要尽量有意义,“见名知意”。

关键字:

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写
常用关键字:

用于定义数据类型的关键字:class,interface,enum,byte,short,int,long,float,double,char,boolean,void

用于定义数据类型值的关键字:true,false,null

用于定义流程控制的关键字:if,else,switch,case,default,while,do,for,break,continue,return

用于定义访问权限修饰符的关键字:private,protected,public

用于定义类,函数,变量修饰符的关键字:
abstract,final,static,synchronized

用于定义类与类之间关系的关键字:extends,implements

用于定义建立实例及引用实例,判断实例的关键字:new,this,super,instanceof

用于异常处理的关键字:try,catch,finally,throw,throws

用于包的关键字:package,import


其他修饰符关键字:native,strictfp,transient,volatile,assert

注:java中的常量所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

Java中的变量

1).变量的定义

变量的概念:

内存中的一个存储区域。该区域有自己的名称(变量名)和类型(数据类型)。Java中每个变量必须先声明,后使用。该区域的数据可以在同一类型范围内不断变化。

定义变量的格式:

数据类型 变量名 = 初始化值

使用变量注意:

变量是通过使用变量名来访问这块区域的,变量的作用域:一对{ }之间有效

2).变量的数据类型

对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。

类型 占用存储空间 表数范围
byte 1字节 -128~127
short 2字节 -215~215-1
int 4字节 -231~231-1
long 8字节 -263~263-1

浮点类型:float、double

与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度。

Java 的浮点型常量默认为 double 型,声明 float 型常量,须后加 ‘f’ 或 ‘F’。

字符类型:char

char 型数据用来表示通常意义上”字符”。

字符型常量的三种表现形式:

字符常量是用单引号(‘ ’)括起来的单个字符,涵盖世界上所有书面语的字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;

Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; – ‘\n’表示换行符

直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。

char 类型是可以进行运算的。因为它都对应有 Unicode 值。

布尔类型:boolean

boolean 类型适于逻辑运算,一般用于程序流程控制:

if条件控制语句;while循环控制语句;do-while循环控制语句;for循环控制语句;

boolean类型数据只允许取值true和false,不可以0或非 0 的整数替代true和false,这点和C语言不同。


基本数据类型转换

自动类型转换

容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
byte->short->int->long->float->double
char->int


强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(()),()中写转换的目标类型,但可能造成精度降低或溢出,格外要注意。

如将3.14转化为int类型:(int)3.14.
boolean类型不可以转换为其它的数据类型。


结论
// byte short int long float doubl
a . 从左至右称为扩宽类型,把左边类型直接赋值给右边类型,称为自动转换,反之需要强转
b. 表达式运算结果的最低级别是int 类型


变量的作用域
变量的作用域:一对{ }之间有效


double小数取后三位 并四舍五入

@Test
public void change2(){    
    double a = 3.2343543345;
    a = (int)(a * 1000 + 0.5)/1000.0;  
    System.out.println(a);
    }

简单的对称加密(使用了^运算符)^-^

@Test
    public void testYiHuo(){//用于简单的对称加密
        int old = 5201314;
        int pwd = 6110;//密钥
        int b = old^pwd;//加密后的值
        System.out.println(b);
        int New = b^pwd;
        System.out.println(New);//解密后的值
        System.out.println(New == old);
    }

java运算符
算术运算符:a++是先使用a的值 再自增
a–是先自增 再使用a的值

@Test
public void change2(){
    int a = 3;
    int b = a++   //a=4 b=3
            + a++ //a=5 b=3+4
            + ++a//a=6 b=7+6
            + a++//a=7 b=13+6
            + ++a//a=8 b=19+8
            + a++;//a=9 b=27+8=35
    System.out.println(a);//9
    System.out.println(b);//35
}

比较运算符 结果都是boolean型
instanceof是检查是否是类的对象
实例:

"Hello" instanceof String
//结果为True

逻辑运算符中
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
和“||”的区别同理,双或时,左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:对于 ^ 而言,当左右都为true时,结果为false。


三目运算符
格式: (条件表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;
例:

@Test
    public int Demo(int a,int b){
        return (a>b)?a:b;
    }
    

选择结构语句

if语句
if-else语句
if-else if-else语句
switch语句
例:

switch(expression){
       case value1 : //语句
                 break; //可选
       case value2 : //语句
                 break; //可选
       case value3 : //语句
                 break; //可选
       default : //可选 //语句
}

逻辑语句结构

while循环
注:要先写i++等语句
do while循环 至少执行一次
break 语句:
break语句用于终止某个语句块的执行

break循环默认只能跳出属于break自己的内循环
再jdk1.6之前 若想跳出循环 需要在原有的循环代码

@Test
 public void Demo(){
     for (int i = 1; i <=5; i++) {
         for (int j = 1; j <=10 ; j++) {
             System.out.println("你好");
             if(j==3){
                 break;
             }
         }
     }
 }

修改为

@Test
    public void Demo(){
        boolean isBr = true;
        for (int i = 1; i <=5&&isBr; i++) {
            for (int j = 1; j <=10 ; j++) {
                System.out.println("你好");
                if(j==3){
                    isBr=false;
                    break;
                }
            }
        }
    }

如果是在jdk1.6之后的版本 可以选择给每一个循环起一个别名

 @Test
public void Demo(){
    forA:for (int i = 1; i <=5; i++) {
        forB:for (int j = 1; j <=10 ; j++) {
            System.out.println("你好");
            if(j==3){
                break forA;
            }
        }
    }
}

continue语句:
continue语句用于跳过某个循环语句块的一次执行
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

函数(方法)

什么是函数
函数声明:
访问权限 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….){
程序代码
return 返回值;

其中:
形式参数:在方法被调用时用于接收外部传入的数据的变量。
参数类型:就是该形式参数的数据类型。
返回值:方法在执行完毕后返还给调用它的程序的数据。
返回值类型:函数要返回的结果的数据类型。
实参:调用函数时实际传给函数形式参数的数据。
2).函数的重载
函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。
在同一个类中可以定义多个同名方法—方法名重载(overload)。
例子:

public class Test{
       public static void main(String [] args){
        int isum;
        double fsum;
        isum=add(3,5);
        isum=add(3,5,6);
        fsum=add(3.2,6.5);
       }
      public static int add(int x,int y)         {  reutrn x+y; }
      public static int add(int x,int y,int z)   { return x+y+z; }
      public static double add(double x,double y){  return x+y; }
    }

注:
重载方法的参数列表必须不同
重载方法的返回值类型可以相同,也可以不同
调用时根据方法的参数类型来区别。