[ 基础语法篇 ] 基于B站韩顺平老师零基础Java教程的学习笔记

Java学习

small tips

  • jdk=jre+java开发工具,jre=jvm+java核心类库

  • 在控制台,按tab可以实现自动补齐

  • javap->反编译,在D:\MYjdk\bin下查看,可以对给定的.class文件提供字节代码的反编译

使用格式:javap -c -v 类名

eg: javap Dog.class(.class可以省略不写)

  • .java是源文件

  • .class是字节码文件,也即编译后形成的文件

  • 在Java中,只要有一个类,那么编译后就一定会生成相应的.class文件

如果存在公有类public类,那么这个文件必须一3该类的名称命名(因为是公有的,那么就不能私人化)

  • main方法也可以写在非public类中,只要有main发入口即可,执行的话可以直接用Java+类名来执行

  • Java编程的规范可参考《阿里巴巴编程手册》

  • 相对路径和绝对路径 (javaSE中的)

相对路径:从当前目录开始定位形成的路径(不带盘符)

绝对路径:从顶级目录开始定位形成的路径(有盘符)

转义字符:
  • 转义字符是针对于英文字符的,因此中文的可以直接使用

  • \t 实现对齐功能

  • \n 换行

  • \ 输出一个\(如果想要输出一个路径,其中必须要\才能输出一个\,ps如果是要两个\,那么就要\\才行)

  • " ’ 输出单引号和双引号,并且此时必须是英文符号

数据类型tips

浮点数的小陷阱

double num1 = 2.7;double num2 = 8.1/3;是不相等的,因为实质上是先把十进制转化成二进制再做运算,但这样必然不准确的,so,不要用两个浮点数进行比较大小的操作

正确的做法可以是计算两个数的差值的绝对值,在某个精度内就可以了,比如if(Math.abs(num1 - num2)<0.001);这就可以了,相当于是相等了

char 字符类型

可存放一个字母,转义字符,一个汉字,数字,但是如果char = 97;输出的时候,输出的其实是a,因为97在char中对应的是ASCII码对应的a(编码的概念),汉字同理,因为有自己的编码所以可以存储汉字

字符的细节:

1.只能用单引号,不能用双引号

2.Java中,char的本质是一个整数,在输出时会编程Unicode码对应的字符

因此char类型是可以做运算的,并且自动换成int类型

字符的本质探讨

char存储到计算机中需要把字符对应的编码转换成二进制,才能存进去

自动类型转换

有多种类型的数据混合运算时,系统会自主将所有数据转换成容量最大的类型

此处提醒,浮点数在Java中默认double型!!!

char和byte和short不会自动转换

类型转换的陷阱
short i = 12;  

i = i-9;  

这是错误的,i-9已经是int类型,无法赋值给short

基本数据类型和String的转换
  • 基本数据类型 → String

格式:String s1 = n1 + "";

也就是基本数据类型加上""即可

  • String → 基本数据类型

需要使用包装类的调用:parsexxx

  • eg:
String s2 = "100";

int n2 = Integer.parseInt(s2);//Integer是一个类,parsexxx是其中一个方法  

注意:字符串转成字符没有上述方法,而是逐步取出字符的过程

s1.charAt(0) 代表着s1字符串的第一个字符

常识

++ 和 –
- int i = 1;  

i++;  

System.out.println("i = "+i);  

会输出:11

但是作为表达式使用,加号在前先加后赋值,加号在后先赋值再加

int j = 8;  

int k = ++j;//此时j,k都是9    

int j = 8;  

int k = j++;//k = 8,k = 9  
短路与&&和短路或|| [ 效率高 ]

短路与:如果第一个条件为false那么不判断了直接false

简单直白来说就是&&有错误就停止,&有错误还要把后面没有执行的给跑完

标识符命名规范
  • 包名:全部小写,网址倒着写

  • 类名,接口名:所有单词首字母大写

  • 变量名,方法名:第一个单词小写,后面的单词首字母大写

  • 常量名:全大写,可以用下划线

键盘输入
import java.util.Scanner//导包  

SCanner myScanner = new Scanner(System.in);//myScanner相当于定义了一个类?  

String s = myScanner.next()//使用了myScanner类中的next方法  

int n = myScanner.nextInt()//输入int

double d = myScanner.nextDouble()//输入浮点数  

但千万要定义数据的类型

for循环的小细节

for(int i = 1;i <= 10;i++)

此处的i只作用于for循环,在循环外面使用就会报错

打印金字塔:外层控制层数,内层控制每层的个数

建议不要使用太多层的嵌套循环,两层最多了

编程思想(技巧)
  • 化繁为简:即将复杂的需求,拆解成简单的需求,再逐步完成

  • 先死后活:先考虑固定的值,再考虑灵活的值

数组的使用细节
  • 一个数组内的数据只能是同一个类型的

  • 数组中的元素可以是任何数据类型,基本数据类型或者引用数据类型,但不能混着来

  • 在数组中,只要分配了空间就一定会有地址

  • 数组名在栈里,对应的地址在堆里

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值