java初级笔记
1:java核心优势:跨平台,一次编译,四处运行,只要安装了对应的jvm虚拟机;
2:JVM其实就是一种规范,就是一个虚拟的用于执行bytecode字节码的计算机;
3:数据类型分为四类八种,整数型(byte,float,int,long),浮点型(short,double),字符型(char),布尔型(Boolean【true,false】),如果是浮点型运算,建议使用bigDecimal,double会损失精度;
4:关于逻辑运算符,短路与(&&) 和 逻辑与(&),前者是只要运算第一个为false,则不再进行运算,逻辑与则是两边都参与运算;
5:程序自身调用自身的编程技巧叫做递归,子问题和上层问题一样,可以调用自身,但是数据大不建议使用,递归会大量占用系统堆栈,比循环效率也低,能用递归解决的问题,循环也可以做到,但是循环解决的问题,递归不一定能做;
一.标识符
标识符的作用:用来给变量,常量,类,包等方法起名;
标识符的规则:1:由字母,数字,美元符,下划线组成;
2:不能是数字开头,区分大小写;
3:长度无限制;
规范:1:见名知意;
2:命名遵循驼峰原则;
二.数据类型
数据类型分为引用数据类型和基本数据类型
引用类型:数组,类,接口;
引用数据类型与基本数据类型的区别是什么?
一个小盒子指向另一个盒子,小盒子引用盒子的地址(引用类型)
一个盒子(基本类型)
基本数据类型:
数值型:
整形:
名称: 符号 范围 大小
字节型: byte -128-127 1个字节
短整型 short [-32768,+32767] 2个字节
整形 int +-21亿 4个字节
长整型 long 很大 8个字节
数值型的字面值默认是int类型,字面值也称之为字面常量
浮点型:
名称 符号 精度 大小
双精度 double 14位 8个字节
单精度 float 7位 4个字节
浮点型的字面值默认是double类型
字符型:
名称 符号 大小
字符型 char 2个字节
逻辑型:
名称 符号 大小
逻辑型 boolean 1位
只有true和false
注意:
1:数据类型当中 后缀有 : L l 、 f F、 D d
2:char类型的字面值需要单引号引起来,而且一个char变量只能储存
一个字符;
3:在赋值时可以给定一个不超过65535的值 程序在执行期间会自动找到 整数对应的字符
4:在字符集合中char类型的值可以转换为一个正整数,可以参与四则运 算,但是需要考虑类型转换问题。
数据类型转换
自动转换:
大类型变量 = 小类型数据
byte short char int long float double
强制转换: (基本数据类型中的强转一般用的比较少 损失数据精度)
类型变量 = (小数据类型)大类型数据;
1.如何给不同的数据类型 赋字面常量值
给整数赋值:
为了提高代码的阅读效率 可以在数值之间加入1个或者是N"_";
十进制
16进制 以"0x""0X" 开头 + 16进制的值
8进制 以"0" 开头 + 8进制的值
2进制 以"0b" 开头 + 2进制的值
给小数赋值:
1、如果0省略不改变其值 可以省略
2、正常赋值小数
3、科学计数法:
小数E/e(整数) :
正整数 增大10 整数次方
负整数 减少10 整数次方
字面常量:”ABC”,21,’d’
符号常量:
通过final修饰的变量称之为符号常量也称之为最终变量
符号常量在程序运行期间其值不可发生改变
符号常量的常量名 所有单词的字母均大写 如果是多个单词 单词之间通过 下划线分割
符号常量:
SHANG_HAI_SHANGZ_XUE_TANG
关键词final
单目和双目以及多目(元)
运算连接的操作数的个数 决定了当前运算符属于单元/目.
2.常用的Dos命令
打开dos窗口 Win+R
盘符+: 切换盘符 (Windows下大小写不敏感)
cd + 同一盘符下的路径 ? 切换目录
cd .. 返回上一层目录
cd/ 回到当前盘符的根目录
↑ ↓ 在之前使用过的命令之间切换
dir 显示当前目录的内容
cls 清屏
exit 退出
Tab 补齐
3. 电脑快捷键
Ctrl + S 保存
Ctrl + C 复制
Ctrl + V 粘贴
Ctrl + X 剪切
Ctrl + A 全选
Ctrl + Z 撤销
Ctrl + Y 重复
Win + D 快速回到桌面
Win + R 打开Dos窗口
Win + Tab 切换窗口
Atl + Tab 切换选项卡
Atl + F4 关闭当前窗口
Ctrl + Alt + Delete 打开任务管理器
Win + L 锁屏
4. 转义字符
‘\特定字母’
\b 退格
\t Tab键
\n 换行
\r 回车
\’ 单引号
\” 双引号
\\ 斜杠
5.键盘录入和随机生成数字
double num=Math.random(); 生成一个【0——1】之间的数据
int a=(int)(Math.random()*40+60) //随机抽出60到100之间的数
返回值关键字 return
键盘录入:
1、导包 import java.util.Scanner;
2、创建对象 Scanner sc = new Scanner(System.in);
3、使用对象 int num = sc.nextInt();
4、后续操作
三.运算符
运算符分为:
运算符优先级:
1:()先计算括号里的;
2: 一元运算符>二元运算符>三元运算符;
3: 算数运算符>关系运算符>逻辑运算符>条件运算符(三目运算符)>赋值运算符(扩展运算符也属于赋值运算符)
1:算数运算符;+,-,*,/,%,++,--
用于数据类型的
2:赋值运算符;=
3:扩展赋值运算符;+=,-=,*=,/= ,%=
扩展运算符:属于算数运算符的一种(+=,-=,/=,*=,%=)
特点:
1:提高开发效率,简单;
2:编译的速度会提高,编译后的class文件都是扩展运算符
3:不利于阅读。
4: 扩展运算符在运算数据时对数据产生强制类型转换;
4:关系运算符,>,<,>=,<=,==,!=
关系运算符:
1:关系运算符得到的类型是boolean类型的值,(true或者false)
5:逻辑运算符; &&,||,!
逻辑运算符:
使用逻辑运算符连接的操作数只能是boolean值,返回的值也是boolean值;
1:&& 和&:逻辑与:当连接的操作数都为true才为true,有一个为false,结果则false
2:|| 和|:逻辑或:当连接的操作数只要有一个为true,结果则为true,
3 逻辑异或^:连接的操作数相同为假,不同则结果为真;
4 !非:取反,false变为true,true变为false;
短路与和逻辑与的区别是,短路与只要第一个是false,则不再往下运行;
短路或和逻辑或的区别是,短路或只要第一个是true,则不再往下运行;
6:位运算符;&,|,^,~ , >>,<<,>>>
7:条件运算符;?:
条件运算符:(三元运算符,三目运算符)
1:表达式1?表达式2:表达式3
表达式1结果为true时,结果为表达式2,表达式1结果为false时,结果为表达式3。
2:条件运算符一定程度上替代了if else;
四.流程控制语句
1:顺序结构;
在main方法里面的语句就是顺序结构,从上到下,逐条输出;
2:选择结构
If结构:单支结构;分支结构,多分支结构;
If(布尔表达式){
代码快
}else If{
}else if{
}else{}
switch(表达式){
Case 值1:执行语句;break; break作用:防止case穿透;
Case 值2:执行语句;break;
Case 值3:执行语句;break;
Case 值4:执行语句;break;
default:其他情况;
}
Break防止穿透最后一个语句后面可以不加,default可以放在任何位置,但是一般放在最后一个。
If和switch的区别:
1:同样是分支结构;
2:if区间判断,switch是等值判断;
3:能用switch做的用if也能用,但是能用if的不一定能用switch;
4;switch的表达式不能使用浮点型和逻辑性的数据;
5: 1.5以后能用枚举,1.7以后能用String字符串;
3:循环结构;
While;do.....while;for
While(布尔条件表达式){
循环体;
迭代因子;
}
do{
循环体
}while(条件表达式)
While和do..while的区别是一个是先判断,后执行;一个是先执行,后判断;
for(初始表达式;布尔表达式;迭代因子){
循环体
}
4:关键字
Continue:
用法:用在控制语句中;
作用:跳出本次循环,执行下一次循环;
特点:只能跳出本层循环,执行下一次循环;
Break:
用法:Switch语句,循环中;
作用:在swit中防止case穿透;跳出当前循环;
注意:break后面不能写语句,否则会报错;
return:
作用:调出当前方法;
5:变量的作用域
测试的变量的生命周期/作用域
变量的三要素:
数据类型 变量名 作用域
变量根据声明的位置:
局部变量
声明在方法中或者是代码块中的变量
代码块: {} 一组大括号括起来的称之为代码块
注意: 局部变量的生命周期 作用域只能在当前声明的方法中或者是代码块中有效
实例变量/成员变量/全局变量
声明在类的类体中 方法外的变量
在整个类中都有效 作用域就是整个类
注意: 不能再一个static的方法方法中使用一个非static修饰的变量
如果想使用:
1、在变量的前面加static
2、Scanner input = new Scanner(System.in);
类名 变量名 = new 类名(); 类名就是当前变量隶属于那个类 存在于那 个类中
变量名.成员变量;
成员变量:
如果没有赋值 可以直接使用 因为存在默认值。
整形 默认值 0
浮点型默认值: 0.0
boolean false
char '\u0000' 1个空格
String 引用类型 --->null
局部变量:
如果要使用时 必须初始化 赋值。赋值之后才能使用
递归:在方法中自己调用自己方法;
一定要有出口--->递归头;
递归的特点:
1:简单(一定要找到递归头);
2:吃内存;
java.lang.StackOverflowError SOF错误。栈内存溢出
方法重载:
方法的签名(方法名+形参);
形式参数就是可以从外界接收数据实际参数就是传给形参的参数
一个类中可以定义有相同的名字,但参数不同的多个方法
调用时,会根据不同的参数表选择对应的方法。
判断依据
同一个类
同一个方法名
不同:参数列表不同(类型,个数,顺序不同)
注意
1:只有返回值不同不构成方法的重载;
int a(String str){},
void a{String i},
2:只有形参的名称不同,不构成方法的重载;
java初级笔记的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
随机推荐
- oracle sql语句大全
ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约 ...
- java用POI操作excel——随便写一下,最基础的东西
前两天部门实施在做一个东西,需要把客户放在Excel中的数据导入到Oracle数据库中,我就想着直接写一个模板,必要的时候改一下实体类应该可以解放实施同事的双手,不过在实际写的过程中,还是碰到很多问题 ...
- NOIP2018游记(划掉) 滚粗记
Day0 早上摸鱼~, 打几个板子就颓废 中午出发, 在火车上颓元气+睡觉. 到了宾馆发现yhx已经帮我们拿了袋子和狗牌,于是上楼欢乐地搓起了六家统, 一直搓到10点钟才回自己房间. 有六家统就有快乐 ...
- AX2009 批处理作业中使用多线程---顶级采摘
顶级采摘 是前两种模式的一种混合,使用使用实体表存储单任务模式那样的每个工单,任务每次都取顶行做操作.单任务数不想单任务模式,一个工单一个任务.而是类似批量捆绑那样设置任务数.表:demoTopPic ...
- 201621123002《java程序设计》第十三周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...
- GUI学习之三——QObject学习总结
鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject. 一.所有的QT对象的基类 我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系 from PyQt5.Q ...
- python 子进程 subpocess 的使用方法简单介绍
python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样. 一:如何理解? 我们可能的理解:多开一个进程运行某个python函数(如果只想实现这个功 ...
- sql中varchar(n),nvarchar(n) 长度性能及所占空间分析
sql中varchar(n),nvarchar(n) 长度性能及所占空间分析 1.varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. ...
- 本地iis新建站点步骤
例如:1.在C:\Windows\System32\drivers\etc\hosts下添加地址 2.在下面IIS加上名称与webUI的地址
- 对于新版本的webstorm对vue的支持
webstorm 对于官方vue的支持,直到2017.1,这个版本,之后的版本不能直接安装vue插件,这时候就需要自己手动新建vue模板了