学习笔记4:快速掌握一门编程语言-Python+Java


图灵完备

  1. 理论上讲任何一个编程语言只要是图灵完备的,就可以实现一切可编程工作,比如 php、java、C 语言等。简单判定图灵完备的方法就是看该语言能否模拟出图灵机。
  2. Linux 的 shell 脚本编程就不是图灵完备的,因此很多通过编程语言完成的事情通过 shell 脚本是无法做到的,类似 HTML 或者 XML 这类标记语言虽然能表达语意,但编写这类标记语言连编程都算不上。

了解编程语言的历史特点以及搞定运行环境

  1. github 搜索这个语言的开源项目,了解它是用来干嘛的
  2. 看别人文章博客了解

掌握变量类型

C/C++: 弱类型,静态类型,值类型
Python: 强类型,动态类型,引用类型

  1. 强类型和弱类型:编译器能否自己识别一个变量是什么类型(int,double等),能就是强类型。按编译器识别方式
  2. 静态类型和动态类型:静态类型即指声明的时候需要说明他是什么类型,动态类型则可用var申明。按程序员声明变量的方式
  3. 值类型和引用类型:c++里面用int,float,double等声明的为值类型,每个变量在栈里面存储;python和js语言,声明的所有对象都是指针;java既有值类型又有引用类型。判断两个变量是否相等,值用"==",引用类型用"echo"。按使用变量的方式
  4. 时间日期的实现和使用:能否直接相减得到间隔日期?
  5. 字符串的实现与种类:C语言的字符数组长度是定长的,无法扩展;c++语可变定长字符串和不可变字符串,字符串常量池使用数据段地址,也就是说将string a = "hello"改为string a = "world",a的地址改变了,指向了“world”的存储地址。
    在这里插入图片描述
  6. 掌握容器类型
  • 注意深复制和浅复制:如list b = list a,其实只是把b的地址修改为指向a,那么还是只有一份。
  • 序列化和反序列化
  1. 函数,方法,类,对象

Pyhton 学习

基础

变量

argument 实参
parameter 形参
argc = argument count
argv = argument vector

list 和 tuple

list是可变有序表,tuple是不能修改的lsit,更安全
list 可以用索引来访问,正序从0起,逆序从-1起
list 常用函数:

a = [m, mm, mmm];
a.append(1);
a.pop(); #弹出末尾元素
a.insert(1,a); #a[1]处插入元素“1”

dict 和 set

a = {'a':1,'b':'dd','c':3};
print(a['a']);
a.get('a') #若不存在,返回none

set无重复元素

s = set([1,2,3,3,4])

循环

生成整数序列:range(0,5,2) //从0到4,步长为2
遍历list或者元组:for i in XXX
下面两种写法是一样的效果,上面这种可实现奇数遍历:

x = "abcdefg";
for i in range(len(x)):
	print(x[i]);
for i in range(5):
	print(i);
x = "abcdefg";
for i in x:
	print(i);

输入

单输入:

str = input('请输入:');
_int = int(str);

oj循环输入:

import sys;
while True: #字符串
	t = sys.stdin.readline().strip();
	if len(t)==0:
		break;
	_list = [i for in t.split(' ')];
	print(_list);
while True: #数字
	t = sys.stdin.readline().strip();
	if len(t)==0:
		break;
	_list = [int(i) for in t.split(' ')];
	print(_list);

格式化输出:

print("%2d-%02d" % (3,1));
print("%.2f" % 3.1415);

结果:
在这里插入图片描述

构建函数

函数参数:默认参数,可变参数,关键字参数

  1. 默认参数
def init(name, age, grade=7):
	print("name = %s, age = %d, grade = %d" % (name, age, grade));
  1. 可变参数
    可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
def calc(nums): # 调用前需要组装list或者tuple
	sum = 0
	for num in nums:
		sum = sum + num;
	return sum
a = [1,2,3,4]
print(calc(a))
print(calc([1,2,3,4]))

def _calc(*nums): # 不用组装list或者tuple
	sum = 0
	for num in nums:
		sum = sum + num;
	return sum 
aa = [1,2,3,4]
print(_calc(*aa))     # 若本来就有list,加个*传进去
print(_calc(1,2,3,4)) # 若没有list,直接传
  1. 关键字参数
    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

文件操作

f = open("a.txt","w");  #没有a.txt文件则会新建改文件
f = open("a.txt","r");  #没有a.txt文件则会报错
c1 = f.read(5);
c2 = f.readlines();

Java 学习

基础

  1. 一个java源码内只能定义一个public类型的class,并且class名称和文件名要完全一致;
javac HelloWorld.java
java HelloWorld.class
  1. java的编译器对字符串做了特殊照顾,可以使用+连接任意字符串和其他数据类型。如果用+连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,再连接。

流程控制

输出

print();  //输出
println();  //输出并换行
printf(); //按c语言用法使用即可

输入

import  java.util.Scanner;

Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();

数组操作

新建数组的三种方法:

int []a={1,2,3,4,5};
int []b=new int[] {1,2,3,4,5};
int []c=new int[5];

Arrays类

int a[]={1,2,3,4,5};
System.out.println(Arrays.toString(num));
Arrays.sort(a);      //排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值