电子管-晶体管
摩尔定律 18个月变一次    
 
贝尔实验室 C语言是基础、芯片领域软件领域
机器语言 ——汇编语言——高级语言 (面向过程,面向对象)
 
基本的逻辑怎么用代码实现
  • 数据类型
数据类型            大小       范围                                             默认值
 
byte(字节)         8         -128 - 127                                           0
shot(短整型)        16      -32768 - 32768                                         0
int(整型)           32   -2147483648-2147483648                                    0
long(长整型)        64   -9233372036854477808-9233372036854477808                  0       
float(浮点型)       32  -3.40292347E+38-3.40292347E+38                            0.0f
double(双精度)        64  -1.79769313486231570E+308-1.79769313486231570E+308        0.0d
char(字符型)        16         ‘ \u0000 - u\ffff ’                             ‘\u0000 ’
boolean(布尔型)     1         true/false                                         false
还有引用类型
 
 
main方法,程序的入口。
若有public,则文件名和前面的名字保持一致
一个源文件可以有多个class文件
编译器是直接跳过注释的,不会编译注释
 
 
跨平台
服务器——手机
linux-unix-windows--
强类型语言
 
内存资源富足或紧缺
 
数据类型  
基本数据类型(数值型*整数和浮点*/字符型/布尔型)八种基本
引用类型(类/接口/数组)
浮点数不能精确的表示所有小数,是有舍入误差的
比较中不用浮点数
BigDecimal 精确计算
布尔类型只占了一位
整形常量默认位int
byte 一个字节 8位 一位是两种状态 所以是2的8次方 256 所以是-128——127
short   2个字节  2的16次方65536       +-三万
int    4字节  2的32次方     +- 21亿
long  8个字节 2的64次方
float 4字节
double 8字节
char 中用unicode字符集  一个单个字符用单引号表示
 
类型之间可转换
可自动类型转换,也可强制类型转换
 
 
  • 变量
变量其实就是一个存储单元。有三个要素:变量名,变量类型,作用域
变量  局部变量/全局变量  静态变量(实例变量,对象私有)/类变量(对象共有)
 
命名规则
变量: 小写字母开头,单词中间大写没有下划线
常量: 全部大写,中间下划线
类名:  大写开头中间大写
变量使用前须声明+初始化
 
类由两部分组成
1、变量的定义
2、方法的定义(一个类中可以由多个方法)
在“变量的定义”中定义的变量为类的成员变量,在整个类中都有效(是全局变量的俗称)。成员变量又分为“实例变量”(类的一个实例,即一个对象)和“类变量”(含static的静态变量)
在方法体中定义的变量叫做局部变量,只在定义他的方法中有效。
局部、实例、成员变量的作用域和生存周期同局部变量一样,而类变量如果用public声明则作用域同全局变量,如果是private则作用域只在类的内部。

其中有static修饰的就是静态变量,没有的就非静态变量
so 有名词:静态全局变量/动态全局变量 、 静态局部变量/动态局部变量
 
局部变量 系统不会自动初始化,需要自己专门初始化
成员变量 则系统会自动初始化
 
 
 
  • 运算符
算术运算符
关系运算符
位运算符
逻辑运算符
赋值运算符
其它运算符
 
点运算符:是对象运算符,取出对象中的属性或方法
 
% 取余数
 
布尔逻辑运算符  与或非  &&  ||  !  与是并且。或是或者。非是反的。
 
短路
 
非就是取反
扩展运算符
 
a +=b  就是 a=a+b
 
  • 控制语句
控制语句(顺序结构/选择结构/循环结构)
选择结构:单选则结构,双选择结构,多选择结构
if后面加布尔表达式true则执行,false则跳过
if else
 
多选择结构在某种情况下能被switch替换
switch 后可直接加变量。 相等的值判断时if else语句可用switch替代
若没有break则case穿透了,可利用穿透
switch 后面加的必须是int,或者是可以自动转换为int的byte,char,short枚举等。
 
  • while/for循环
while 后也是加布尔表达式,若为true,则执行循环体,若false,则跳出。
循环:初始化,条件判断,循环体,迭代
while先判断再执行
dowhile 先执行再判断
 
for循环  
for循环和while循环本质一样。
for的括号内(初始化,条件判断,迭代)+{循环体}
初始化——>判断——>循环体——>迭代 的顺序
 
break 终止所有循环
和continue 终止当次循环
 
  • 方法
method/function
方法:用来完成特定功能的代码片段
方法就是一个功能块,有输入(参数)有输出(返回值)  
有的功能有返回值,有的功能没有返回值。
形参:也就是形式参数,就是在定义一个方法的时候假定给的一个参数,不是实际参数。只是定义的一个概念
return 有两个作用,一个是返回值,一个是结束方法的调用。
Java中方法调用只有值传递没有引用传递。
设计方法的原则:最好保持方法的原子性,一个方法尽量只完成一个功能。这样有利于扩展
java中的方法调用分为(1)静态方法  直接使用 "n= 类名.方法名"调用 . 静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。
(2)普通方法  通过new创建对象 " Method m =new Method(); n= m.方法名"    然后使用  对象.方法  调用
 

  • 递归结构/递归方法
递归:自己调用自己
用的时候:先定义递归头(什么时候不调自己) 再定义递归体(什么时候调自己)
递归是一层一层的调用,没到头的话就所有都还开启着,一直在等最后的结果
 
  • api文档
package 包  核心包:java.lang包  类似于“文件夹”  
命名:域名倒着写,不要使用默认包,cn.yao 和cn.yao.com 是不同的包,二者之间没有关系
api:Application Programming Interface 应用程序编程接口
api的文档:所有包,包中所有类和接口,接口或类的详细说明
JDK中主要的包

  • scanner输入,可以使用键盘输入
  • 面向对象(object-oriented)
    类,对象,面向对象的三大特征

    通过类来组织代码,用对象封装数据
    C 面向过程,一个一个方法为组织组织起来的
    C++   一个一个类为组织组织起来的,里面有变量有方法。相近的数据相近的行为放在一起。 组织在一起。(复杂的比较有优势)
     
    有了面向对象仍然需要面向过程的
    面向对象的思维去把握整体,面向过程的思维去把握细节

    面向对象编程(OOP)的本质:以类的方式组织代码,以对象的方式(封装)数据。(先写类再引出对象)
    面向对象思维:OOA,OOD(先有对象再有类)
    对象:具体的事物  abstract
    类:对对象的抽象(抽象:抽出象的部分)
    先有具体的对象,然后抽象出对象中相像的部分归纳出类,通过类再认识其他对象。
    编程是先有类,再写对象
     
    对象:object/instance(实例)都是对象
    对象是以类为模板建立起来的。类就是模板
     
    学Java:学别人写好的类,写自己的类
     
    • 类的属性(类的成员变量)(静态的数据)
    属性若未初始化则使用默认值:数值0,  0.0,  \u0000, null,  false.
    局部变量则系统不会初始化。
    • 类的方法(动态的行为)
    Java中方法参数传递都是 值传递!(方法传参传的都是值/指向的地址)
     
    Java语言中除了基本类型之外的其他变量类型都是引用类型。
    Java中对象是通过引用reference对其操作的。(引用了某个对象的地址)
     
     
    内存中的调用
    栈:存放局部变量
    堆:存放new出来的对象
    方法区:也是堆 存放类的信息(代码),static变量,常量池(字符串常量)等。

    垃圾回收机制(Garbage Collection)

    自动回收,System.gc()通知清理内存。
     
     
    • 构造器/构造方法 constructor
    归属于方法,通常都还在创建的类中写着,只是这个方法是用来创建对象的而已。
    用于构造该类的实例(实例即对象)
    [修饰符] 类名 (形参列表){
      //n条语句
    }
    方法通过new或者对象来调用(因为方法要通过对象来调用,但是这里的构造方法要调用的时候还没有对象,所以就用new来调用这个构造方法。)
    构造器名称必须和类名一致
    不需要返回值无需写return
    经常用来构造该类的对象,或者用来初始化对象的属性
     
     
    • 重载(overload)
    方法的重载:同一个类中,一个方法名可以有多种不同的方法。(形参的类型,个数,以及顺序不同都可以构成重载)。但是返回值类型以及形参的名称不同就无法构成重载。调用时会自动选择匹配对应的方法。
    重载的本质就是只要对同名的方法不构成歧义,则可以重载。
    因为构造器也是方法,所以重载对构造器也适用。构造器也可以重载。
     
    定义类的时候没有(),在定义跟类同名的方法的时候一定有()。
     
    • static变量
    在类中,用static声明的成员变量为静态变量,或者叫类属性,类变量。
    在内存中是置于堆的方法区中,static的方法和static的变量都在堆中。为静态方法。调用时可直接“类名.类属性”不需要对象就可调用。
    普通变量都是从属于对象的,但是static是从属于类的。
    静态方法中不能引用非静态的变量(因为静态方法从属于类,而普通变量和类从属于对象)
    不加类名就是本类的方法/变量,加类名是调用其他类的方法/变量。
    普通方法中可以调用静态的属性和方法。在静态中不能调用非静态的属性和方法(因为静态中调用不到非静态的属性和方法)。
     
    对象可以用类的也可以用对象的。
    类只能用类的不能用对象的。
     
    • this(指代当前对象)
    每个普通方法(非类方法)都会自动传的隐式参数
    普通方法中,this总是指向调用该方法的对象。
    构造方法中,this总是指向正要初始化的对象。
    this不能用于static方法(因为this这个默认参数在static方法中没有对象,也不传this,也传不过去)。

最新文章

  1. Unity iOS混合开发界面切换思路
  2. MVC下载文件方式
  3. EFcodeFirst+T4=操纵任意数据库
  4. Y2K Accounting Bug
  5. ASP.NET与SOAP协议使用记录
  6. OpenGL中glPushMatrix和glPopMatrix的原理
  7. 简单的新闻客户端APP开发(DCloud+thinkphp+scrapy)
  8. java和Ajax
  9. 深入理解php内核 编写扩展 II:参数、数组和ZVALs
  10. linux locate命令
  11. k8s-No.2-pod学习
  12. npm ERR! File exists: /XXX/xxx npm ERR! Move it away, and try again.
  13. springboot集成quartz定时任务课动态执行
  14. 1. volatale 关键字 -内存可见性
  15. Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)
  16. docker挂载点泄露问题
  17. mysql [索引优化] -- in or替换为union all
  18. BZOJ2264 : Free Goodies
  19. BZOJ 3473: 字符串 (广义后缀自动机)
  20. Java容器涉及的类(代码)

热门文章

  1. linux sort命令用法
  2. layui 后台分页
  3. Flask之Local、LocalStack和LocalProxy
  4. 【DevOps】在CentOS中安装DockerCE
  5. 更改和配置本地yum源
  6. 命令检测站点是否使用CDN加速
  7. 国内可用的python源
  8. framebufferfetch in mali multiple render targets mrt
  9. Django Forms的错误提示
  10. BZOJ2616 SPOJ PERIODNI(笛卡尔树 + DP)