Day02 java入门

Day02 Java入门

前言
2021年3月7日,java学习正式开始。
菜鸡硕士放弃算法的幻想转行开发,后期看情况可能转大数据,毕竟机器学习深度学习不能白学。
希望自己能够坚持下来,明年这时候能去大厂实习!

1. 类

java基础单元是类,所有程序都在类中

  • public class 类名{}: 类名称要与文件名一致
  • class 类名{}: 类名称可以与文件名不一致,但是编译后的*.class文件是类名
  • 有多个class时会编译成多个*.class文件,实际很少会出现,一般用一个public class即可
  • 首字母大写的驼峰命名法

主方法

public static void main(String [] args){
	程序开始执行
}

主方法所在的类成为主类,所有主类都用 public class 定义

屏幕打印

System.out.println(); 输出后追加换行
System.out.print(); 输出之后不追加换行

Shell交互式编程环境

为了省事,不写结构代码,没有python好用

  • /open 打开文件直接执行

CLASSPATH

SET CLASSPATH=…

设置JRE解释程序的路径,默认是当前文件夹 或者用 . 表示当前路径

部分软件会更改CLASSPATH,所以需要先设置

  • PATH 是操作系统提供的路径配置,定义所有可执行程序的路径
  • CLASSPATH 由 JRE 提供用于定义java程序解释时类加载路径,JVM --> CLASSPATH --> 类加载器

注释

编译器编译时不对注释进行处理

  • // 单行,用的多
  • /* … */ 多行
  • /****/ 文档,重要的类和文档用工具写

标识符和关键字

  • 标识符由 字母、数字、_ 、$ 组成
  • 关键字

2. 数据类型

基本数据类型

描述具体的数字单元

数值型

  • 整型:byte, short, int, long default = 0
  • 浮点型:float, double default = 0.0
  • 整型默认 int
  • 首选 int, double
  • 数据传输和文字编码用 byte
  • 描述内存或文件大小,描述表的主键列用 long

布尔型 default = False

  • boolean

字符型 default = ‘\u0000’

  • char

引用数据类型

内存关系的使用
数组,类,接口 default = null

溢出

  • 超过最大范围后产生溢出,例如int 的max+1得到
public class day02_base {
    public static void main(String [] args){
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println(max);
        System.out.println(min);
        System.out.println("-----------分割线------------");
        System.out.println(max+1);
    }
}

[out] 
2147483647
-2147483648
-----------分割线------------
-2147483648
  • 通过强制转换可以处理,不过尽量不用,直接改类型更好
public class day02_base {
    public static void main(String [] args){
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println(max+1L);
        System.out.println(max+1l);
        System.out.println((long)max+1);
    }
}
  • 小类型可以自动转换成大类型,大类型要强制转小类型

浮点型

  • 直接用 double
  • 整型计算得浮点数时自动丢掉小数点后,所以需要转换

字符型

单引号表示,unicode编码范围:

  • 大写字母 65 - 90
  • 小写字母 97 - 122
  • 数字 48 - 57
int ai = 'a';
System.out.println((char)(ai-32));

[out] A

布尔型

true 和 false

字符串

String 非基本数据类型,封装得到,双引号表示

  • 转义符:\n \t \"

  • 字符串连接用 +

  • 和数值型相加时把数值型变成字符串连接

String str = "hello world ";
int x = 10 ;
double y = 1.33 ;

System.out.println(str + x + y);
System.out.println((str + (x+y)));

[out] hello world 101.33
[out] hello world 11.33

3. 运算符

优先级用括号解决,不用复杂表达式

数学运算符

num = num + 10 比 num += 10 占更多空间,曾经为了节省内存需要,现在尽量不用或者单独一行写出 ++x

int x = 10 ;
int result = ++x;
int result1 = x++;

System.out.println(result);
System.out.println(x);
System.out.println(result1);

[out] 
11
12
11
  • 变量++ / – :先用变量计算,再自增/自减
  • ++ / – 变量:先自增/自减,再计算
  • 变量++ 不改变变量,++变量改变变量的值

关系运算符

汉字编码等价于汉字字符

char c = '我';
int ci = 25105;
boolean flag = ci == c;
System.out.println(flag);

[out] true

三元运算符

重点内容:设置一个逻辑判断后进行赋值操作,避免冗长的赋值,即三元表达式

格式:关系运算 ? 关系满足时的内容 :关系不满足时的内容

注意:合适时使用,尽量不要嵌套

int x = 10 ;
int y = 20 ;
// int z = 5 ;
int max = x > y ? x : y ;
// int max = x > y ? (x > z ? x : z) : (y > z ? y : z)
System.out.println(max);

[out] 20

位运算符

与&,或|,异或^,非~

<<,>> 移位计算

  • 乘方,运算不影响原数值

  • 2**3 即 2 << (3-1)

化成二进制按位计算:

int x = 13 ;
int y = 7 ;

System.out.println(x & y);

[out] 5

问题:&、| 和 &&、||的区别

  • 两者都可以表示逻辑运算符,整体按逻辑运算进行
  • &、|所有条件都执行,还可以作为位运算符,两边表达式不是bool类型时即表示位运算
  • &&、||若第一个表达式 false/true 则第二个表达式不执行

4. 程序逻辑控制

顺序、分支、循环

if分支

int x = 11 ;
int y = 7 ;
if (x>3 & x<10){
   System.out.println("满足条件");
}else if (y<5){
   System.out.println("收台湾!");
}else{
   System.out.println("打美国!");
}

[out] 打美国!

switch分支

开关语句,根据内容判断,允许 int / char / 枚举 / String 类型,不能逻辑判断

每个case需要break停止,否则将一直执行

switch(数据) {
    case 数值 : {
        满足时执行 ;
        break ;
    }
    case 数值 : {
        满足时执行 ;
        break ;
    }
    default : {
        都不满足时 ;
     	break ;
    } 
}

while循环

 while (布尔表达式){

	条件满足时执行;

	修改循环条件;
}
do{
    循环体 ;
} while()

常用 while ,很少使用 do…while

for循环

for (初始化; 循环判断; 修改条件){
    循环体 ;
}

知道循环次数时用 for循环

知道循环结束条件时用 while循环

循环控制

break 和 continue

  • break 从此次循环结束
  • continue 结束此次循环进行下一次循环,不要用于 continue 其它方法

5. 方法

method,即函数。方法在主类中定义并由主方法直接调用,无返回值时用 void 声明。

  • 方法名称和变量名称用首字母小写的驼峰命名法
public static 返回值类型 方法名称([参数类型 变量,...]){
    方法体;
    return 返回值;
}

调用无参无返回值方法:

  • 可以通过 return;结束调用
public class day02_base {
    public static void main(String [] args){
        printMessage();
    }
    public static void printMessage() {
        System.out.println("成功调用了printMessage方法");
    }
}

调用含参含返回值方法:

public class day02_base {
    public static void main(String [] args){
        String lunch = getLunch(9.82);
        System.out.println(lunch);
    }
    public static String getLunch(double money) {
        if (money>20){
            return "您的饭请拿好~\n找零:" + (money-15) ;
        } else {
            return "余额不足,还需:" + (15-money) + "元" ;
        }
    }
}

方法的重载

方法名称相同,但是参数的类型或者个数不同。根据调用时实参的类型自动选择合适的方法。

  • 实际使用时返回值类型设置成相同的
  • 例如System.out.print()就是方法重载

方法的递归调用

自己调用自己,解决重复且麻烦的问题。

  • 一定要设置递归调用的结束条件
  • 每次调用一定要修改参数条件
  • 不必要情况不要使用,处理不当会导致内存溢出
public class day02_base {
    public static void main(String [] args){
        System.out.println(sum(100));
    }
    public static int sum(int num) {
        if (num == 1){
            return 1;
        }
        return num + sum(num-1);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值